首页 > 代码库 > 数据库 列 转 行

数据库 列 转 行

技术分享

转成

技术分享

代码如下:

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

 

数据库 列 转 行