对两个不同的列求和时,将SQL中的列设置为结果列

时间:2018-08-03 15:30:55

标签: sql select sql-server-2012 sql-update

我看过有关如何将同一表中的列加在一起的教程。但是,我还没有看到如何返回两列相加后的结果列,然后将该结果设置为全新的列。

下面的代码用于返回两列/向量之间的和:

SELECT Cost_0 + Rev_0 FROM myTestDb.dbo.COST, myTestDb.dbo.REVENUE;

因此,我认为我可以在新表的更新块中使用此行代码BREAK_EVEN:

UPDATE myTestDb.dbo.BREAK_EVEN
SET B_E0 = (SELECT Cost_0 + Rev_0 FROM myTestDb.dbo.COST, myTestDb.dbo.REVENUE);

运行此命令时,我受到影响(0行),这使我想到两个问题:

  1. 我的代码实际上在做什么,并且

  2. 我需要更改什么才能设置B_E0 = Cost_0 + Rev_0?

1 个答案:

答案 0 :(得分:0)

尝试使用CTE

    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语句。

希望有帮助。