散分,sql语句,谢谢
表1:
工号 姓名
11 aaa
22 bbb
表2:
工号 金额 时间
11 12.01 2004-1
11 13 2004-1
22 55 2004-3
22 78 2004-1
实现的功能是:
工号 姓名 发生金额
1月 2月 3月 4月。。。。
11 aaa 25.01 0 0 0。。。。
22 bbb 78 0 55 0。。。。
select a.*,b.* from yb1 a,(
select C1,sum(C4),sum(m1),sum(m2),sum(m3),sum(m4),sum(m5),sum(m6),sum(m7),
sum(m8),sum(m9),sum(m10),sum(m11),sum(m12) from(
select C1,C4,
max(decode(to_char(D1, 'mm'),'01',C4,0)) m1,
max(decode(to_char(D1, 'mm'),'02',C4,0)) m2,
max(decode(to_char(D1, 'mm'),'03',C4,0)) m3,
max(decode(to_char(D1, 'mm'),'04',C4,0)) m4,
max(decode(to_char(D1, 'mm'),'05',C4,0)) m5,
max(decode(to_char(D1, 'mm'),'06',C4,0)) m6,
max(decode(to_char(D1, 'mm'),'07',C4,0)) m7,
max(decode(to_char(D1, 'mm'),'08',C4,0)) m8,
max(decode(to_char(D1, 'mm'),'09',C4,0)) m9,
max(decode(to_char(D1, 'mm'),'10',C4,0)) m10,
max(decode(to_char(D1, 'mm'),'11',C4,0)) m11,
max(decode(to_char(D1, 'mm'),'12',C4,0)) m12
from(
select C1,sum(C4) as C4,D1
from yb2 group by C1,D1)
group by C1,C4
)
group by C1) b
where a.C1=b.C1(+);
这个语句能解决,可如果一个人在三月消费3次,每次10元,则在最后的统计中三月只消费了10元。
应该怎么改改,谢谢各位