如果具有相同的概述ID,则添加列值的T-SQL语句

时间:2014-04-15 16:15:17

标签: sql sql-server tsql

我是SQL Server的新手,所以我需要所有的帮助。我想写一个针对表运行的查询。

这是要求。

该表有这种数据

projID         ALLW           OBLIG   
-----------------------------------------
459OU2002       2637368.14      637368.14   
459OU2002A     23448321.33    12853209.88
459OU2002B     12853209.88    23448321.33

我想要的结果是:

projID         ALLW                OBLIG    
------------------------------------------------------------------------
459OU2002       38938888.47(sum of all 3)     369388900.35(sum of all 3)

项目ID已经过阶段。 A和B.如果项目ID有一个阶段,那么它的全部成本都必须在视图之上进行累计(添加)。例如,如果项目Id 101AU212具有ALLW 50.00并且具有项目ID 101AU212A下的阶段且ALLW是100.00。我希望项目Id 101AU212显示150.00 ALLW。

由于

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL SERVER 2005及更高版本,请参阅以下代码。

DECLARE @Input TABLE
(ProjID VARCHAR(20),
Allw DECIMAL(15,2),
Oblig DECIMAL(15,2)
)

INSERT INTO @Input VALUES('459OU2002', 2637368.14, 637368.14), ('459OU2002A', 23448321.33, 12853209.88), ('459OU2002B', 12853209.88, 23448321.33)

;WITH CTE AS
(
SELECT LEFT(ProjID,9) AS ProjID, Allw, Oblig 
FROM @Input
)
SELECT ProjID, SUM(Allw) AS Allw, SUM(Oblig) AS Oblig 
FROM CTE
GROUP BY ProjID

如果您使用的是SQL 2000,请使用子查询而不是CTE。