SQL分组多列统计(GROUPBY后按条件分列统计)
最近遇到⼀个问题,需要对⼀张表做统计,这个统计有什么特别之处值得我记录了下来呢?⼤家知道SQL中聚合函数GROUP BY的结果⼀般为⼀列,即多个值通过聚合函数运算统计到⼀起,但是如何将不同条件的值统计到不同列中呢,即按条件统计到多个列中。举个栗⼦:groupby是什么函数
YEAR TYPE VALUE
20151100
20152200
20161150
20162300
20163100
转为:
YEAR TYPE1TYPE2TYPE3
20151002000
2016150300100
这时候我们除了⽤到GROUP BY之外还需要CASE WHEN,SQL如下:
SELECT year,
SUM(CASE WHEN type=1THEN value ELSE0END) as type1,
SUM(CASE WHEN type=2THEN value ELSE0END) as type2,
SUM(CASE WHEN type=3THEN value ELSE0END) as type3,
FROM table_test GROUP BY year
⼩⼩的知识点,记录下来并分享给有需要的⼈。
P.S. 这⾥TYPE是写死的,有没有办法能更灵活⼀点呢?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。