Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么这个程序不起作用?_Sql Server - Fatal编程技术网

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

Sql server 为什么这个程序不起作用?,sql-server,Sql Server,这是我的第一个问题。我对SQL Server和T-SQL非常陌生 我想创建一个表,其中的一列正在使用另一列的数据。我想我可以使用选择功能,但这是不允许的 怎么做 以这种方式创建视图非常简单,但我希望有一个表而不是视图 应该是这样的 Column A, ColumnB, Column C=select count(*) from [another table] where.... 你能给我个建议吗 SELECT [COLUMN A],[COLUMN B],COUNT(*) as [CO

这是我的第一个问题。我对SQL Server和T-SQL非常陌生

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

怎么做

以这种方式创建视图非常简单,但我希望有一个表而不是视图

应该是这样的

Column A, ColumnB, 
Column C=select count(*) from [another table] where....
你能给我个建议吗

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

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

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

Insert table1 (colA, Colb, colC)
select 'test', 10, count(*) 
from  tableb
where ...
如果必须从多个表中获取数据,则可能需要联接


如果需要在TableB中的值更改时维护计算列,则可能需要在TableB上编写触发器,或者更易于开发和维护,并且不太可能出现错误或创建数据完整性问题。为此,请使用视图而不是单独的表

可能重复的计算列不能依赖于其他表。如果您需要经常创建一个包含该逻辑的视图,我有一个带有coulmns的表[reservations]:booking\u id、person\u id、trip\u id。我还有一个带有列[available\u places]的表[trips],我希望还有一个带有[free\u places]的列这里我需要计算这次旅行已经预订了多少次,从trip_id=1的预订中选择count*。但是在我的项目中,我也需要在表中有这样一列。我尝试使用此语法ALTER TABLE\u name ADD column\u name datatype,但出现错误:-