我们如何计数和求和所有下行线到他们的上行线使用SQL。
当前数据:
ST_ID UPLINE AMOUNT
---------------------------
44930 52001 400
52016 52001 300
52001 9024 432
76985 9024 100
12123 35119 234
12642 35119 213
12332 23141 654
在上表中,uplinedata
52001
两个ST_ID
,金额分别为400
和300
,总和为700
,ST_ID具有52001
以及金额400
,因此5201
总量将是400 + 300 + 432 = 1132
,且同样地,上行线9024
具有52001
的ST_ID
和432 + 700
以及1132
的总量。
预期输出:
UPLINE AMOUNT CNT
------------------------
52001 1132 2 (400 +300 + 432 | 1+1+1)
9024 1232 4 (700 + 432 + 100 | 2+1+1 = 4)
35119 447 2 (234 + 213 | 1+1 = 2)
23141 654 1
我想到了递归CTE,但无法收集逻辑。有人有什么想法来实现这一点吗?我使用的是SQL Server 2016。
1条答案
按热度按时间fbcarpbf1#
正如我所理解的,Upline列连接到ST_ID列,并且您希望找到按(Upline + ST_ID中的所有匹配值)分组的总和和计数,即Upline = 9024连接到ST_ID = 52001,因此Upline = 9024的总和将是(9024中的432 + 100加上52001中的300 + 400)。
可以按如下方式使用递归CTE:
参见demo。
根据新要求进行更新(除了先前查询的总和外,还添加ST_ID=Upline的值的总和):
参见demo。