数据库 列 转 行

转成

代码如下:

1 SELECT YEAR 年, 
2 SUM(CASE MONTH WHEN 1 THEN amount ELSE 0 END) 一月,
3 SUM(CASE WHEN MONTH=2 THEN amount ELSE 0 END) 二月,
4 SUM(CASE WHEN MONTH=3 THEN amount ELSE 0 END) 三月,
5 SUM(DECODE(MONTH,4,amount,0)) 四月
6 FROM temp_table_201307 GROUP BY YEAR

这里提供了三种方式实现:

1. CASE month WHEN THEN amount ELSE 0 END

不能判断区间:当month==1的时候,值为amount,否则为0;

2. CASE WHEN month = 2 THEN amount ELSE 0 END

推荐第二种写法(这是标准写法):可以判断区间

3. DECODE (MONTH,4,AMOUNT,0)

类似三元运算符(不能判断区间):month == 4 ? amount : 0

 

posted @ 2015-01-13 16:39  江湖一笑  阅读(243)  评论(0编辑  收藏  举报