Sql 在一个查询中更改表、添加列和设置列值?
在同一查询中,是否可以向现有表中添加一列,并使用case when设置该列的值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' 谢谢 使用计算列怎么样? 请在此处阅读更多信息:
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中,新列似乎需要引用联接表中的值。