其实比较繁琐,假设你字段名是:月份,费用Select '费用' As "类型", SUM(Case 月份 When '01' Then "费用" Else 0 End) As "一月", SUM(Case 月份 When '02' Then "费用" Else 0 End) As "二月", ... SUM(Case 月份 When '12' Then "费用" Else 0 End) As "十二月" From 表
试试decode函数吧 --假设表名tb1 2个字段名 月份:mon 费用:price select ' ','10','11','费用差' from dual union all select '费用',sum(decode(mon,'10',price,0)) November,sum(decode(mon,'11',price,0)) December, sum(decode(mon,'11',price,0)-decode(mon,'10',price,0)) n_d from tb1
Select '费用' 类型, Sum(Nvl(Case 月份 When '01' Then 费用 Else 0 End,0)) as 一月, Sum(Nvl(Case 月份 When '02' Then 费用 Else 0 End,0)) as 二月, Sum(Nvl(Case 月份 When '03' Then 费用 Else 0 End,0)) as 三月, ... Sum(Nvl(Case 月份 When '12' Then 费用 Else 0 End,0)) as 十二月, From MonthSum
http://topic.csdn.net/u/20120130/16/ed748c60-8967-4232-ab45-4cb387bb790c.html
SUM(Case 月份 When '01' Then "费用" Else 0 End) As "一月",
SUM(Case 月份 When '02' Then "费用" Else 0 End) As "二月",
...
SUM(Case 月份 When '12' Then "费用" Else 0 End) As "十二月"
From 表
--假设表名tb1 2个字段名 月份:mon 费用:price
select ' ','10','11','费用差' from dual
union all
select '费用',sum(decode(mon,'10',price,0)) November,sum(decode(mon,'11',price,0)) December,
sum(decode(mon,'11',price,0)-decode(mon,'10',price,0)) n_d
from tb1
Select '费用' 类型,
Sum(Nvl(Case 月份 When '01' Then 费用 Else 0 End,0)) as 一月,
Sum(Nvl(Case 月份 When '02' Then 费用 Else 0 End,0)) as 二月,
Sum(Nvl(Case 月份 When '03' Then 费用 Else 0 End,0)) as 三月,
...
Sum(Nvl(Case 月份 When '12' Then 费用 Else 0 End,0)) as 十二月,
From MonthSum
1. 创建一个临时表;
2. 通过游标先取到月份;
3. 游标遍历时用月份为条件,按月统计,并Insert到临时表中;
4. 游标循环结束,返回临时表的结果集。
tb你的表名……
select sum(decode(月份,11, 费用,10,-费用,0) from tb
这样不就可以嘛。。