读书人

oracle如何行列转换

发布时间: 2013-06-26 14:29:32 作者: rapoo

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来处理

读书人网 >oracle

热点推荐