求sql 行列转行解决方案

比如oralce查出一张表
图片说明

要转换成如图需求的表 如何做
图片说明

差不多下面这样

select (月份 || '月') 月份
  ,sum(decode(日期, 1, 行走公里数,0)) as 1日
  ,sum(decode(日期, 2, 行走公里数,0)) as 2日
  ,sum(decode(日期, 3, 行走公里数,0)) as 3日
  ,sum(decode(日期, 4, 行走公里数,0)) as 4日
  ,sum(decode(日期, 5, 行走公里数,0)) as 5日
  ,sum(decode(日期, 6, 行走公里数,0)) as 6日
  ,sum(decode(日期, 7, 行走公里数,0)) as 7日
  ,sum(decode(日期, 8, 行走公里数,0)) as 8日
  ,sum(decode(日期, 9, 行走公里数,0)) as 9日
  ,sum(decode(日期, 10, 行走公里数,0)) as 10日
  ,sum(decode(日期, 11, 行走公里数,0)) as 11日
  ,sum(decode(日期, 12, 行走公里数,0)) as 12日
  ,sum(decode(日期, 13, 行走公里数,0)) as 13日
  ,sum(decode(日期, 14, 行走公里数,0)) as 14日
  ,sum(decode(日期, 15, 行走公里数,0)) as 15日
  ,sum(decode(日期, 16, 行走公里数,0)) as 16日
  ,sum(decode(日期, 17, 行走公里数,0)) as 17日
  ,sum(decode(日期, 18, 行走公里数,0)) as 18日
  ,sum(decode(日期, 19, 行走公里数,0)) as 19日
  ,sum(decode(日期, 20, 行走公里数,0)) as 20日
  ,sum(decode(日期, 21, 行走公里数,0)) as 21日
  ,sum(decode(日期, 22, 行走公里数,0)) as 22日
  ,sum(decode(日期, 23, 行走公里数,0)) as 23日
  ,sum(decode(日期, 24, 行走公里数,0)) as 24日
  ,sum(decode(日期, 25, 行走公里数,0)) as 25日
  ,sum(decode(日期, 26, 行走公里数,0)) as 26日
  ,sum(decode(日期, 27, 行走公里数,0)) as 27日
  ,sum(decode(日期, 28, 行走公里数,0)) as 28日
  ,sum(decode(日期, 29, 行走公里数,0)) as 29日
  ,sum(decode(日期, 30, 行走公里数,0)) as 30日
  ,sum(decode(日期, 31, 行走公里数,0)) as 31日

from 表 group by 月份

参考http://blog.csdn.net/danielinbiti/article/details/44977749

楼上正解,oracle行转为列用decode,列转为行可以用union

select 月份,
sum(case 日期 when 1 then 行走公里数 esle 0 end) 1号,
sum(case 日期 when 2 then 行走公里数 esle 0 end) 2号,
sum(case 日期 when 3 then 行走公里数 esle 0 end) 3号,
sum(case 日期 when 4 then 行走公里数 esle 0 end) 4号,

sum(case 日期 when 5 then 行走公里数 esle 0 end) 5号,
sum(case 日期 when 6 then 行走公里数 esle 0 end) 6号,
sum(case 日期 when 7 then 行走公里数 esle 0 end) 7号,
sum(case 日期 when 8 then 行走公里数 esle 0 end) 8号,
sum(case 日期 when 9 then 行走公里数 esle 0 end) 9号,
sum(case 日期 when 10 then 行走公里数 esle 0 end) 10号,
sum(case 日期 when 11 then 行走公里数 esle 0 end) 11号,
sum(case 日期 when 12 then 行走公里数 esle 0 end) 12号,
sum(case 日期 when 13 then 行走公里数 esle 0 end) 13号,
sum(case 日期 when 14 then 行走公里数 esle 0 end) 14号,
sum(case 日期 when 15 then 行走公里数 esle 0 end) 15号,
sum(case 日期 when 16 then 行走公里数 esle 0 end) 16号,
sum(case 日期 when 17 then 行走公里数 esle 0 end) 17号,
sum(case 日期 when 18 then 行走公里数 esle 0 end) 18号,
sum(case 日期 when 19 then 行走公里数 esle 0 end) 19号,
sum(case 日期 when 20 then 行走公里数 esle 0 end) 20号,
sum(case 日期 when 21 then 行走公里数 esle 0 end) 21号,
sum(case 日期 when 22 then 行走公里数 esle 0 end) 22号,
sum(case 日期 when 23 then 行走公里数 esle 0 end) 23号,
sum(case 日期 when 24 then 行走公里数 esle 0 end) 24号,
sum(case 日期 when 25 then 行走公里数 esle 0 end) 25号,
sum(case 日期 when 26 then 行走公里数 esle 0 end) 26号,
sum(case 日期 when 27 then 行走公里数 esle 0 end) 27号,
sum(case 日期 when 28 then 行走公里数 esle 0 end) 28号,
sum(case 日期 when 29 then 行走公里数 esle 0 end) 29号,
sum(case 日期 when 30 then 行走公里数 esle 0 end) 30号,
sum(case 日期 when 31 then 行走公里数 esle 0 end) 31号
form 表 group by 月

能帮助到你就好,用到 请 采纳 谢谢!!