我需要创建列,其中根据其他列值的条件对其他列求和。要求如下。
我有下表:
key code1 code2 code3 code4 value1 value2 value3 value4
0 101 101 101 101 1000 1000 1000 1000
1 101 101 101 201 1000 1000 1000 1000
2 101 101 201 201 1000 1000 1000 1000
3 101 201 201 201 1000 1000 1000 1000
4 101 201 201 301 1000 1000 1000 1000
5 101 201 301 301 1000 1000 1000 1000
6 101 301 301 301 1000 1000 1000 1000
7 101 101 101 301 1000 1000 1000 1000
8 101 201 301 0 1000 1000 1000 0
9 101 301 0 0 1000 1000 0 0
....
考虑到列代码(code1,code2,code3,code4),我需要创建一个列来对列值(value1,value2,value3,value4)求和。结果应该是这样的:
key code1 code2 code3 code4 value1 value2 value3 value4 sum_code_101 sum_code_201 sum_code_301
0 101 101 101 101 1000 1000 1000 1000 4000 0 0
1 101 101 101 201 1000 1000 1000 1000 3000 1000 0
2 101 101 201 201 1000 1000 1000 1000 2000 2000 0
3 101 201 201 201 1000 1000 1000 1000 1000 3000 0
4 101 201 201 301 1000 1000 1000 1000 1000 2000 1000
5 101 201 301 301 1000 1000 1000 1000 1000 1000 2000
6 101 301 301 301 1000 1000 1000 1000 1000 0 3000
7 101 101 101 301 1000 1000 1000 1000 3000 0 1000
8 101 201 301 0 1000 1000 1000 0 1000 1000 1000
9 101 301 0 0 1000 1000 0 0 1000 0 1000
由于实际表有25个不同的代码(101、201、301…),我需要创建25列来求它们的值之和。
任何帮助都将不胜感激。
1条答案
按热度按时间xkftehaa1#
你可以用
case
表达:通过取消对行的分隔,可以稍微缩短语法
cross apply
,然后使用条件聚合: