1
分组假设像这样的表:一列的条件的总和,然后全部由第三
| A | B | C |
-------------
| a | 1 | 1 |
| a | 4 | 1 |
| b | 2 | 1 |
| b | 6 | 3 |
| a | 4 | 6 |
| b | 2 | 7 |
我想要得到的B
总和由A
分组的C
不同的频段。我可以通过一个内部查询使每带一个新列做有那些当我要总结的价值观和零,我不喜欢这样的:
SELECT A, SUM(B*band_1) as band_1, SUM(B*band_2) as band_2
FROM (SELECT A,
B,
CASE
WHEN C <= 5 THEN 1
ELSE 0
END as band_1,
CASE
WHEN C > 5 and C <= 10 THEN 1
ELSE 0
END as band_2
FROM MyTable) as T
GROUP BY A
其中一期工程。但是当我有很多乐队时,这个查询会变得相当笨拙。有没有更好的方法来做到这一点?也许使用PIVOT
或动态SQL甚至OLAP或什么?
哦,我喜欢这个问题 – gsharp
你有一个模式那些乐队?你知道在查询之前会有多少乐队? – EricZ
@EricZ我不确定是否会有模式,但我一定会事先知道乐队。如果你有一个依赖于模式的解决方案,它仍然可能值得一看...... – Dan