T-SQL 运用自连接逐行统计sum值

主要是利用聚合函数通过自连接去实现分组逐行计算某列的sum值

这是统计前

统计后结果为

 

实现代码如下:

 1 create table sales
 2 ( 
 3   productname nvarchar(50) 
 4  ,dateofmonth nvarchar(20)
 5  ,quantity int 
 6 )
 7 
 8 insert into sales
 9 select p1,201401,100
10 union all 
11 select p1,201402,300
12 union all 
13 select p1,201403,500
14 union all 
15 select p2,201401,200
16 union all 
17 select p2,201402,300
18 union all 
19 select p2,201403,300
20 union all 
21 select p2,201401,300
22 union all 
23 select p3,201402,100
24 union all 
25 select p3,201403,300
26 
27 --select * from sales
28 
29 select ROW_NUMBER()over(order by productname,dateofmonth,quantity) sid,*
30 into #temp
31 from sales
32 
33 --select * from #temp
34 select dense_rank()over(order by productname) rid,*
35 into #temp1
36 from #temp
37 
38 select
39  a.productname
40 ,a.dateofmonth
41 ,a.quantity
42 ,sum(b.Quantity) AS TOTAL
43 from #temp1 a,#temp1 b
44 where a.sid >= b.sid and a.rid = b.rid
45 group by a.productname,a.dateofmonth,a.quantity

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。