我有以下数据:( J-Job,T-Task,H-Hours)
工作包括由几小时组成的任务
J T H
1 1 5
1 1 3
2 2 4
2 3 2
我想得到以下结果:( S-for Job Hours Sum,P-Task Hours Sum)
J S T P H
1 8 1 8 5
1 8 1 8 3
2 6 2 4 4
2 6 3 2 2
我的意思是保留相同的数据,另外还有2列:
1)总结总工作时间
2)总结总任务时间
答案 0 :(得分:2)
使用窗口功能非常简单。使用OVER (Partition BY)
时,您可以使用聚合函数而无需更改其他行。
DECLARE @table TABLE ( J INT, T INT, H INT )
INSERT INTO @table
( J, T, H )
VALUES ( 1, 1, 5 )
, ( 1, 1, 3 )
, ( 2, 2, 4 )
, ( 2, 3, 2 )
SELECT J
,SUM(h) OVER ( PARTITION BY j ) AS S
,T
,SUM(h) OVER ( PARTITION BY j, t ) AS S
,H
FROM @table
答案 1 :(得分:0)
像
这样的东西SELECT *,
SUM(H) OVER (PARTITION BY J) S,
SUM(H) OVER (PARTITION BY J, T) P
FROM YourTable
答案 2 :(得分:0)
当然你可以通过使用窗口聚合函数
选择 s =总和(h)超过(J分区) ,t =总和(h)OVER(J,T分区) ,J ,T ,h来自dbo.your' s_table