2016-01-14 38 views
-2

这是我的第一个问题。我是SQL Server和T-SQL的新手。为什么这个程序不起作用?

我想创建一个表,其中一列使用另一列的数据。我以为我可以使用选择功能,但它是不允许的。

怎么办?

以这种方式创建视图非常简单,但我希望有一张表格不能查看。

它应该看起来像

Column A, ColumnB, 
Column C=select count(*) from [another table] where.... 

能否请你指教?

+0

可能的重复[如何基于另一个表创建表](http://stackoverflow.com/questions/18254104/how-do-i-create-a-table-b ased-on-another-table) –

+3

*计算列*不能依赖于其他表。如果你需要频繁地创建一个包含该逻辑的**视图** –

回答

0
SELECT [COLUMN A],[COLUMN B],COUNT(*) as [COLUMN C] 
INTO [destination table] FROM [another table] where... 

你应该使用别名

0

创建使用CREATE TABLE语法,因为您需要定义字段名称和大小的表。在Books Online中查看语法。除非您创建一次性使用临时表或临时表,否则请勿使用SELECT INTO。创建新表格不是一个好的选择。另外,除了第一列之外,你不会说其他列是从哪里来的,所以可能不可能从最初的插入中正确设置正确的字段大小。此外,坦率地说,您应该花时间思考您需要的列以及它们应该是什么样的数据类型,避免对永久使用的表执行此操作是不负责任的。

要填充您使用插入语句与选择而不是值语句。如果仅列C来自另一个表,那么它可能是这样的“。

Insert table1 (colA, Colb, colC) 
select 'test', 10, count(*) 
from tableb 
where ... 

如果你必须得到来自多个表中的数据,那么你可能需要一个连接

如果您需要当TableB中的值更改时维护计算列,那么您可能需要在TableB或更高版本上编写触发器(更易于开发和维护,不太可能成为bug或创建数据完整性问题),而不是单独使用视图表。

+0

我所拥有的是一个带coulmns的表格:booking_id,person_id,trip_id。而且我还有一个表[[]]与[[available_places]列],我希望再有一个列[free_places],在这里我需要计算这次旅行已经预订了多少次(select count(*)from预订其中trip_id = 1 –

+0

我确实有这样的一个视图,但在我的项目中,我也需要在表中有这样一个列,我尝试使用这种语法“ALTER TABLE table_name ADD column_name datatype”但出错:-( –