【问题标题】:Why this procedure is not working?为什么这个程序不起作用?
【发布时间】:2016-04-20 09:54:15
【问题描述】:

这是我在这里的第一个问题。我对 SQL Server 和 T-SQL 很陌生。

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

怎么做?

用这种方式创建视图很简单,但是我想要一个表而不是视图。

应该是这样的

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

你能建议吗?

【问题讨论】:

标签: sql-server


【解决方案1】:

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

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

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

如果你必须从多个表中获取数据,那么你可能需要一个连接。

如果您需要在 TableB 中的值更改时维护计算列,那么您可能需要在 TableB 上编写触发器或更好(更易于开发和维护,并且不太可能出现错误或产生数据完整性问题)使用视图而不是单独的表。

【讨论】:

  • 我有一张表 [reservations],其中包含以下字段:booking_id、person_id、trip_id。而且我还有一张表 [trips] 列 [available_places] 我想再列一列 [free_places] 在这里我需要计算这次旅行已经进行了多少预订(select count(*) from trip_id=1 的预订。
  • 我确实有这样的看法。但在我的项目中,我还需要在表格中有这样的一列。我尝试使用这种语法“ALTER TABLE table_name ADD column_name datatype”,但出现错误:-(
【解决方案2】:
    SELECT [COLUMN A],[COLUMN B],COUNT(*) as [COLUMN C] 
INTO [destination table] FROM [another table] where...

你应该使用别名

【讨论】:

    猜你喜欢
    • 2013-01-26
    • 2015-05-21
    • 2022-01-17
    • 1970-01-01
    • 2019-12-31
    • 2013-08-09
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多