Sql 在一个查询中更改表、添加列和设置列值?

Sql 在一个查询中更改表、添加列和设置列值?,sql,sql-server,Sql,Sql Server,在同一查询中,是否可以向现有表中添加一列,并使用case when设置该列的值 ALTER TABLE #totalrevenue ADD TotalRevenue_2003 Int CASE WHEN (Full2003 + Half2003 = 0) THEN NULL ELSE 1 END FROM data.revenuesummary WHERE #totalrevenue.ID = data.revenuesummary.ID' 谢谢 使用计算列怎么样? 请在此处阅读更多信息:

在同一查询中,是否可以向现有表中添加一列,并使用case when设置该列的值

ALTER TABLE #totalrevenue
ADD TotalRevenue_2003 Int CASE WHEN (Full2003 + Half2003 = 0) THEN NULL ELSE 1 END 
FROM data.revenuesummary
WHERE #totalrevenue.ID = data.revenuesummary.ID'

谢谢

使用计算列怎么样? 请在此处阅读更多信息:

小小的例子

CREATE TABLE dbo.#Products 
(
    ID int IDENTITY (1,1) NOT NULL
  , Full2003 smallint
  , Half2003 smallint
  , TotalRevenue2003 AS IIF(Full2003 + Half2003 = 0, NULL, 1)
);

INSERT INTO dbo.#Products
    (Full2003, Half2003)
VALUES
    (2, 3),
    (2, 2),
    (2, -2)

SELECT *
FROM dbo.#Products
结果:

ID  Full2003    Half2003    TotalRevenue2003
1   2           3           1
2   2           2           1
3   2           -2          NULL

别这么想。为什么?不,你不能这么做。ALTER是DDL,更改数据是DML。它们不是一回事。将此拆分为两个语句。首先修改表,然后立即更新。在OP中,新列似乎需要引用联接表中的值。