我是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。
由于
答案 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。