假设我在SQL Server中有以下表:
ColA ColB ColC
A 1 100
A 0 -100
A 1 -100
A 0 100
A 1 100
A 1 -100
B 1 200
B 1 -200
B 1 200
C 0 300
C 1 -300
Run Code Online (Sandbox Code Playgroud)
而我想要实现的目标(用语言)是:
创建一个新列,Conditional_Sum= ColC在ColA哪里ColB = 1和每个值的总和ColC > 0
因此,最终结果将是(在RowNum中添加以显示我如何获得值):
Rownum ColA ColB ColC Conditional_Sum
1 A 1 100 200 (rows 1+5)
2 A 0 -100 200 (rows 1+5)
3 A 1 -100 200 (rows 1+5)
4 A 0 100 200 (rows 1+5)
5 A 1 100 200 (rows 1+5)
6 A 1 -100 200 (rows 1+5)
7 B 1 200 400 (rows 7+9)
8 B 1 -200 400 (rows 7+9)
9 B 1 200 400 (rows 7+9)
10 C 0 300 0 (no rows match)
11 C 1 -300 0 (no rows match)
Run Code Online (Sandbox Code Playgroud)
所以,我的伪SQL就是:
Sum(ColC) Over(Partition By ColA, ColB=1,ColC>0) as Conditional_Sum
Run Code Online (Sandbox Code Playgroud)
如何在我的数据集中实现这种结果?
谢谢!!!!!!
Dan*_*rth 29
试试这个:
Sum(case when ColB = 1 and ColC > 0 then ColC else 0 end) over(partition by ColA)
Run Code Online (Sandbox Code Playgroud)
我的答案假设第7行到第9行的条件和应该是400.
| 归档时间: |
|
| 查看次数: |
19125 次 |
| 最近记录: |