您的位置:首页 > 数据库

SQL分组多列统计(GROUP BY后按条件分列统计)

2015-04-05 22:31 447 查看
最近遇到一个问题,需要对一张表做统计,这个统计有什么特别之处值得我记录了下来呢?大家知道SQL中聚合函数GROUP BY的结果一般为一列,即多个值通过聚合函数运算统计到一起,但是如何将不同条件的值统计到不同列中呢,即按条件统计到多个列中。举个栗子:

YEARTYPEVALUE
20151100
20152200
20161150
20162300
20163100
转为:

YEARTYPE1TYPE2TYPE3
20151002000
2016150300100
这时候我们除了用到GROUP BY之外还需要CASE WHEN,SQL如下:

SELECT year,
SUM(CASE WHEN type=1 THEN value ELSE 0 END) as type1,
SUM(CASE WHEN type=2 THEN value ELSE 0 END) as type2,
SUM(CASE WHEN type=3 THEN value ELSE 0 END) as type3,
FROM table_test GROUP BY year


小小的知识点,记录下来并分享给有需要的人。

P.S. 这里TYPE是写死的,有没有办法能更灵活一点呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: