为什么这个程序不起作用?

时间:2016-01-14 21:44:15

标签: sql-server

这是我的第一个问题。我是SQL Server和T-SQL的新手。

我想创建一个表,其中一列使用来自另一列的数据。我以为我可以使用select函数,但是不允许这样做。

怎么做?

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

应该看起来像

Column A, ColumnB, 
Column C=select count(*) from [another table] where....
你能告诉我吗?

2 个答案:

答案 0 :(得分:0)

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

您应该使用别名

答案 1 :(得分:0)

您使用create table语法创建表,因为您需要定义字段名称和大小。在联机丛书中查看语法。除非要创建一次性使用的临时表或临时表,否则不要使用SELECT INTO。它不是创建新表的好选择。另外,除了第一列之外,您没有说出任何其他列的来源,因此可能无法从初始插入中正确设置正确的字段大小。此外,坦率地说,您应该花时间考虑您需要哪些列以及它们应该是什么数据类型,避免对永久使用的表执行此操作是不负责任的。

要填充,请使用带有select而不是values语句的Insert语句。如果只有列c来自另一个表,那么它可能类似于“:

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

如果您必须从多个表中获取数据,那么您可能需要加入。

如果你需要维护计算列,因为TableB中的值发生了变化,那么你可能需要在TableB或更好的上编写触发器(更容易开发和维护,不太可能出错或造成数据完整性问题)使用a查看此而不是单独的表。