将SQL中的一列设置为两个不同列求和时的结果列
我看过关于如何在同一个表中添加列的教程;但是,我没有看到如何返回两列相加的结果列,然后将结果设置为一个全新的列 下面的代码用于返回两列/向量之间的和:将SQL中的一列设置为两个不同列求和时的结果列,sql,select,sql-server-2012,sql-update,Sql,Select,Sql Server 2012,Sql Update,我看过关于如何在同一个表中添加列的教程;但是,我没有看到如何返回两列相加的结果列,然后将结果设置为一个全新的列 下面的代码用于返回两列/向量之间的和: SELECT Cost_0 + Rev_0 FROM myTestDb.dbo.COST, myTestDb.dbo.REVENUE; 因此,我假设我能够在我的新表BREAK_-en中的更新块中使用这行代码: UPDATE myTestDb.dbo.BREAK_EVEN SET B_E0 = (SELECT Cost_0 + Rev_0 FRO
SELECT Cost_0 + Rev_0 FROM myTestDb.dbo.COST, myTestDb.dbo.REVENUE;
因此,我假设我能够在我的新表BREAK_-en中的更新块中使用这行代码:
UPDATE myTestDb.dbo.BREAK_EVEN
SET B_E0 = (SELECT Cost_0 + Rev_0 FROM myTestDb.dbo.COST, myTestDb.dbo.REVENUE);
当我运行此操作时,我受到(0行)影响,这导致我提出两个问题:
WITH qry1 AS
(
SELECT [SomeRecordID] /*need some kind of record to reference when
updating existing values*/
, Cost_0 + Rev_0 AS ResultSum
FROM COST
JOIN REVENUE ON /*YOU NEED TO DEFINE YOUR JOIN COLUMNS OR YOU WILL HAVE A
CARTESIAN JOIN*/
)
UPDATE BREAK_EVEN
SET B_E0 = [ResultSum]
FROM qry1
JOIN BREAK_EVEN ON qry1.SomeRecordID = BREAK_EVEN.MatchingRecordID
;
抱歉,如果这有点难看,但我不知道您的记录id来自您的源表,我也不知道您正在尝试更新哪些记录
因为您想使用UPDATE,所以我假设您正在更新当前记录。如果要创建新记录,请使用INSERT语句
希望这会有所帮助。确实需要样本数据和期望的结果。你应该学会使用正确的、明确的、标准的
JOIN
语法。SET子句下的SELECT并没有WHERE条件,所以将返回两个表的交叉联接。几乎听上去任何表中都可能没有数据?同意@GordonLinoff,你能提供样本数据吗?