日期:2014-05-17  浏览次数:20784 次

oracle怎么行列转换
理想中是显示成这样: 

       公司 年总计报表
2010年 2011年 2012年 2013年 总计
金额(万元) 300 400 500 600 1800

现实中显示成了这样:

年份 金额
2010 2323
2011 123
2012 123
2013 123

我用DevExpress的GridControl控件做的,我需要改数据库的语句,还是改控件属性代码什么的呢?我用vs2010winfrom窗体做的。

代码里,直接就是 gridcontrol.DataSource = dt; 绑定的数据库。 

然后数据库里是是酱紫的: 
select substr(DATE,0,4) as 年份,sum(PRICE) as 金额 from 表
GROUP BY SUBSTR(DATE,0,4)
Oracle 数据库 行列转换

------解决方案--------------------
这个在数据库层面就可以搞定丫。类似如下

select sum(decode(t.year,'2012',t.amount,0)) ,sum(t.year,'2013',t.amount,0)..,sum(t.amount) from  t
------解决方案--------------------
11g有PIVOT、UNPIVOT函数可以用
其他版本可以用DECODE或CASE来处理