将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行)影响,这导致我提出两个问题:

  • 我的代码实际上在做什么

  • 我需要更改什么才能设置B_E0=成本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语句


    希望这会有所帮助。

    确实需要样本数据和期望的结果。你应该学会使用正确的、明确的、标准的
    JOIN
    语法。SET子句下的SELECT并没有WHERE条件,所以将返回两个表的交叉联接。几乎听上去任何表中都可能没有数据?同意@GordonLinoff,你能提供样本数据吗?