日期:2014-05-17  浏览次数:20792 次

请各位高手查看一下这个合计SQL语句哪出错了!!!!!
有两个表,一个是部门表,一个预算表表结构如下 
select * from td_dep //部门表 
depID depName 
1 生产部 
2 办公室 
3 质检站 

select * from td_pay //预算表 
payID payName payDate fee_money bankroll_money depid 
1 报出车费 2007-01-02 100.50 200.5 1 
2 报招待费 2007-01-04 50 100 2 
3 报柴油费 2007-02-24 500 1000 1 
4 报柴油费 2007-03-03 200 1000 1 
5 报出车费 2007-04-04 50 100 1 
6 报党建费 2007-05-06 50 500 1 
7 报出车费 2007-05-15 100 100 1 

现在我要合计出生产部3、4、5月的费用情况并得出合计,我写了一个SQL语句,但是老是不显示合计
这个是我的SQL语句:
select decode(yy.payid || ' ', ' ', '本月小计 ',yy.payid || ' ') as payid, 
  yy.payname, 
  tt.paydate, 
  tt.sum_fee_money, 
  tt.sum_bankroll_money, 
  yy.depName, 
  tt.ym 
  from ( 
  select grouping_id(to_char(tp.payDate, 'yyyymm '),tp.payDate), 
  tp.payDate, 
  to_char(tp.payDate, 'yyyymm ') as ym, 
  sum(tp.fee_money) as sum_fee_money, 
  sum(tp.bankroll_money) as sum_bankroll_money 
  from td_dep td, 
  td_pay tp 
  where td.depID = tp.depid 
  and td.depid = 1
  group by rollup(to_char(tp.payDate, 'yyyymm '),tp.payDate) 
  )tt 
  , 
  (select * 
  from td_dep td, 
  td_pay tp 
  where td.depID = tp.depid 
  and td.depid = 1 
  )yy  
  where tt.payDate = yy.payDate(+) 
  and tt.ym >= '200703 ' 
  and tt.ym <= '200705 ' 
  and tt.ym is not null 

我得出的结果是这样的,没有每个月合计行。
payid payname paydate sum_fee_money sum_bankroll_money depName ym
4 报柴油费 2007-3-3 200 1000 生产部 200703 
5 报出车费 2007-4-4 50 100 生产部 200704 
6 报党建费 2007-5-6 50 500 生产部 200705 
7 报出车费 2007-5-15 100 100 生产部 200705
请各位高手赐教!万分感谢!

------解决方案--------------------
可能是别名的问题,我下面的代码有结果!
select decode(yy.payid || ' ', ' ', '本月小计 ',yy.payid || ' ') as payid, 
yy.payname, 
tt.paydate, 
tt.sum_fee_money, 
tt.sum_bankroll_money, 
yy.depName, 
tt.ym 
from ( 
select grouping_id(to_char(td_pay.payDate, 'yyyymm '),td_p