日期:2014-05-18  浏览次数:20507 次

求一Sql语句 请高手帮忙 50分送上~~~
表一 id(自增) 交易id(int) 月份(int) 月费用(int)
  1 1 3 200
  2 1 4 300
  3 1 5 160
  4 1 6 320
  5 2 4 100
  6 2 5 490
  7 2 6 200
  8 4 6 1000
  9 4 8 800

  表二 交易id(int) 经手人id
  1 38
  2 99
  4 38

现在要用sql语句得出这样的结果  
   
  经手人id 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 
  38 0 0 200 300 160 1320 0 800 0 0 0 0
  99 0 0 0 100 490 200 0 0 0 0 0 0

在线等 高手受累吧 感激不尽

------解决方案--------------------
select 经手人id,
sum(case 月份 when 1 then 月费用 else 0) '1月',
sum(case 月份 when 2 then 月费用 else 0) '2月',
sum(case 月份 when 3 then 月费用 else 0) '3月',
sum(case 月份 when 4 then 月费用 else 0) '4月',
sum(case 月份 when 5 then 月费用 else 0) '5月',
sum(case 月份 when 6 then 月费用 else 0) '6月',
sum(case 月份 when 7 then 月费用 else 0) '7月',
sum(case 月份 when 8 then 月费用 else 0) '8月',
sum(case 月份 when 9 then 月费用 else 0) '9月',
sum(case 月份 when 10 then 月费用 else 0) '10月',
sum(case 月份 when 11 then 月费用 else 0) '11月',
sum(case 月份 when 12 then 月费用 else 0) '12月'
from
(
select b.经手人id,a.月份,a.月费用 from 表一 a,表二 b where a.交易id = b.交易id
) t
group by 经手人id
------解决方案--------------------
select
b.经手人id, 
[01月]=sum(case a.月份 when 1 then a.月费用 else 0 end),
[02月]=sum(case a.月份 when 2 then a.月费用 else 0 end),
[03月]=sum(case a.月份 when 3 then a.月费用 else 0 end),
[04月]=sum(case a.月份 when 4 then a.月费用 else 0 end),
[05月]=sum(case a.月份 when 5 then a.月费用 else 0 end),
[06月]=sum(case a.月份 when 6 then a.月费用 else 0 end),
[07月]=sum(case a.月份 when 7 then a.月费用 else 0 end),
[08月]=sum(case a.月份 when 8 then a.月费用 else 0 end),
[09月]=sum(case a.月份 when 9 then a.月费用 else 0 end),
[10月]=sum(case a.月份 when 10 then a.月费用 else 0 end),
[11月]=sum(case a.月份 when 11 then a.月费用 else 0 end),
[12月]=sum(case a.月份 when 12 then a.月费用 else 0 end)
from
表二 a,
表一 b
where
a.交易id=b.交易id
group by
b.经手人id
order by
b.经手人id