Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90344
  • 博文数量: 25
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-12 13:45
文章分类
文章存档

2016年(25)

我的朋友

分类: Oracle

2016-06-08 14:19:18

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

YEAR TYPE VALUE
2015 1 100
2015 2 200
2016 1 150
2016 2 300
2016 3 100







转为:

YEAR TYPE1 TYPE2 TYPE3
2015 100 200 0
2016 150 300 100





这时候我们除了用到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是写死的,有没有办法能更灵活一点呢?

更多精彩Oracle内容 请点击:


阅读(11516) | 评论(0) | 转发(0) |
0

上一篇:分析drop col对于数据存储块做了什么

下一篇:没有了

给主人留下些什么吧!~~