Sql server 2008 使用下面的查询更新列

Sql server 2008 使用下面的查询更新列,sql-server-2008,sql-update,Sql Server 2008,Sql Update,我正在尝试更新一列,该列是另一列的累积和 这是我对累计金额的查询。现在我需要在我的表中更新它。 请对此提出建议 SELECT s.[MM], s.[ProjectID], s.[Total_To_Bill], ISNULL(( SELECT SUM(SS.[Total_To_Bill]) FROM @mtss1 SS WHERE SS.[ProjectID] = s.[ProjectID] AND SS.MM <= S.MM

我正在尝试更新一列,该列是另一列的累积和

这是我对累计金额的查询。现在我需要在我的表中更新它。 请对此提出建议

SELECT s.[MM], s.[ProjectID], s.[Total_To_Bill],
    ISNULL((
        SELECT SUM(SS.[Total_To_Bill])
        FROM @mtss1 SS WHERE SS.[ProjectID] = s.[ProjectID] 
            AND SS.MM <= S.MM), 0) AS [ProjectedBillable] FROM @mtss1 AS s

假设MM是每行上的唯一键,则以下操作完成了您所需的操作:

with toupdate as (
     SELECT s.[MM],s.[ProjectID], s.[Total_To_Bill],
             Isnull((select SUM(SS.[Total_To_Bill])
                     FROM @mtss1 SS 
                     WHERE  SS.[ProjectID] = s.[ProjectID] and SS.MM <= S.MM) ,0
                    ) As [ProjectedBillable]
     From @mtss1 As s
    )
update t
    set t.cumsum = toupdate.ProjectedBillable
    from toupdate
    where t.mm= toupdate.MM and t.MM

如果MM没有定义每一行,那么您需要一列或列的组合来定义。

如果我理解您的问题,这个链接可能会有帮助,我担心OP使用的是表变量,UNIQUE可能不可执行?我选择现在在表中更新它,因为这意味着有一个与表变量分离的实际表。