表1:
工号 姓名
11 aaa
22 bbb
表2:
工号 金额 时间
11 12.01 2005-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。
最好用一句sql语句,谢谢了
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(trunc(D1, 'month'),to_date('2004-01-01','yyyy-mm-dd'),C4,0)) m1,
max(decode(trunc(D1, 'month'),to_date('2004-02-01','yyyy-mm-dd'),C4,0)) m2,
max(decode(trunc(D1, 'month'),to_date('2004-03-01','yyyy-mm-dd'),C4,0)) m3,
max(decode(trunc(D1, 'month'),to_date('2004-04-01','yyyy-mm-dd'),C4,0)) m4,
max(decode(trunc(D1, 'month'),to_date('2004-05-01','yyyy-mm-dd'),C4,0)) m5,
max(decode(trunc(D1, 'month'),to_date('2004-06-01','yyyy-mm-dd'),C4,0)) m6,
max(decode(trunc(D1, 'month'),to_date('2004-07-01','yyyy-mm-dd'),C4,0)) m7,
max(decode(trunc(D1, 'month'),to_date('2004-08-01','yyyy-mm-dd'),C4,0)) m8,
max(decode(trunc(D1, 'month'),to_date('2004-09-01','yyyy-mm-dd'),C4,0)) m9,
max(decode(trunc(D1, 'month'),to_date('2004-10-01','yyyy-mm-dd'),C4,0)) m10,
max(decode(trunc(D1, 'month'),to_date('2004-11-01','yyyy-mm-dd'),C4,0)) m11,
max(decode(trunc(D1, 'month'),to_date('2004-12-01','yyyy-mm-dd'),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(+);
这个能实现,可就是2004年能用,我想不考虑年份,只考虑月份。帮我改改,谢谢
工号 姓名
11 aaa
22 bbb
表2:
工号 金额 时间
11 12.01 2005-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。
最好用一句sql语句,谢谢了
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(trunc(D1, 'month'),to_date('2004-01-01','yyyy-mm-dd'),C4,0)) m1,
max(decode(trunc(D1, 'month'),to_date('2004-02-01','yyyy-mm-dd'),C4,0)) m2,
max(decode(trunc(D1, 'month'),to_date('2004-03-01','yyyy-mm-dd'),C4,0)) m3,
max(decode(trunc(D1, 'month'),to_date('2004-04-01','yyyy-mm-dd'),C4,0)) m4,
max(decode(trunc(D1, 'month'),to_date('2004-05-01','yyyy-mm-dd'),C4,0)) m5,
max(decode(trunc(D1, 'month'),to_date('2004-06-01','yyyy-mm-dd'),C4,0)) m6,
max(decode(trunc(D1, 'month'),to_date('2004-07-01','yyyy-mm-dd'),C4,0)) m7,
max(decode(trunc(D1, 'month'),to_date('2004-08-01','yyyy-mm-dd'),C4,0)) m8,
max(decode(trunc(D1, 'month'),to_date('2004-09-01','yyyy-mm-dd'),C4,0)) m9,
max(decode(trunc(D1, 'month'),to_date('2004-10-01','yyyy-mm-dd'),C4,0)) m10,
max(decode(trunc(D1, 'month'),to_date('2004-11-01','yyyy-mm-dd'),C4,0)) m11,
max(decode(trunc(D1, 'month'),to_date('2004-12-01','yyyy-mm-dd'),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(+);
这个能实现,可就是2004年能用,我想不考虑年份,只考虑月份。帮我改改,谢谢
解决方案 »
- 在dbgrid添加多个汇总行
- 咨询SQL语句,order by,top相关
- 这个问题该怎么显示啊,好像在delphi里没法解决吧?
- 请问可以对adoquery里查到的记录再进行查询吗?
- 导出DLL
- 在点击Listbox后,除了第一行的字符串的宽度不变外,其他行都发生变长,如何使其他行的长度不变?
- 在ShellListView中怎么可以单击一个文件,然后得到文件名?
- 如何把Pointer中存放的地址转换成integer
- 挑战高手的问题!
- 如何控制一个窗体的显示!
- 请大家来评评这段代码,看有什么地方耍要改进的?谢谢!------100分------
- 紧急呼救!关于报表打印,提供有价值线索者,另加50分,谢谢各位
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(+);
===========================================================
下下功夫吧