编辑Oracle报告1中的总计行

时间:2015-09-02 09:28:27

标签: oracle

数据结构:

sql-> desc t1

- List item
   p_code number,
   acc_date date ,
   debit number,
   credit number

我桌子内的数据:

sql-> select * from t1;

| p_code | acc_date | debit | credit |
| 001    | 01-01-15 | 100   | 25     |
| 001    | 02-01-15 | 0     | 125    |   
| 001    | 03-01-15 | 415   | 85     |        

我想做这样的事情:

select * from t1  
where acc_date between :fromdate and :todate 
union all
    select p_code, (sum(nvl(debit,0))- sum(nvl(credit,0))) open_balance  
    from t1
    where acc_date < :fromdate
;

但是,我无法弄清楚我的错误是什么。

1 个答案:

答案 0 :(得分:3)

union中的类型和列数必须相同 -

select p_code, acc_date, debit, credit, null as open_balance
  from t1
 where acc_date between :fromdate and :todate
union all
select p_code, null as acc_date, null as debit, null as credit,
       (sum(nvl(debit, 0)) - sum(nvl(credit, 0))) open_balance
  from t1
 where acc_date < :fromdate