数据库 列 转 行
表
转成
代码如下:
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 1 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