我有两张表A
ID          入库时间                      字段其他
20070101    2007-01-01 8:00:25            ........
20070102    2007-01-01 8:00:25            .........
20070103    2007-01-01 8:01:21            .........
表B
ID           税种         税额
20070101     营业税       200
20070101     个人所得税   100
20070102     城建税        100
20070102     营业税      150
20070103     个人所得税   120
现在我所要得到的结果为:
时间                         ID     营业税    个人所得税   城建税    合计
2007-01-01 8:00:25       20070101     200          100        0       300
                         20070102     150          0         100      250
2007-01-01 8:00:25总共开了两张,       250          100       100      450
2007-01-01 8:01:21       20070103      0          120         0      120  
2007-01-01 8:01:21总共开了一张         0           120        0      120
合计                                   600         440      200     1240
这种统计该怎么写SQL语句,望高手们多多赐教,很急呀,在线等
    

解决方案 »

  1.   

    基本上就这样,稍微改改就行了:
    select 入库时间,id,营业税,个人所得税,城建税,营业税+个人所得+城建税 as "合计"
    (
    select a.入库时间,
    max(a.id) as id,
    max(decode(b.税种,'营业税',b.税额,null)) as "营业税",
    max(decode(b.税种,'个人所得税',b.税额,null)) as "个人所得税",
    max(decode(b.税种,'城建税',b.税额,null)) as "城建税"
     from 表A a,表B b
    where a.id = b.id
    group by a.a.入库时间
    )
      

  2.   

    这样就行了:
    select 入库时间,id,营业税,个人所得税,城建税,
    nvl(营业税,0)+nvl(个人所得,0)+nvl(城建税,0) as "合计"
    (
    select a.入库时间,
    max(a.id) as id,
    max(decode(b.税种,'营业税',b.税额,null)) as "营业税",
    max(decode(b.税种,'个人所得税',b.税额,null)) as "个人所得税",
    max(decode(b.税种,'城建税',b.税额,null)) as "城建税"
    from 表A a,表B b
    where a.id = b.id
    group by a.a.入库时间
    )
      

  3.   

    如果是想把id再区分,就这样:select 入库时间,id,营业税,个人所得税,城建税,
    nvl(营业税,0)+nvl(个人所得,0)+nvl(城建税,0) as "合计"
    (
    select a.入库时间,
    a.id,
    max(decode(b.税种,'营业税',b.税额,null)) as "营业税",
    max(decode(b.税种,'个人所得税',b.税额,null)) as "个人所得税",
    max(decode(b.税种,'城建税',b.税额,null)) as "城建税"
    from 表A a,表B b
    where a.id = b.id
    group by a.a.入库时间,a.id
    )
      

  4.   

    这样的结果是          入库时间            ID     营业税  个人所得税 城建税 合计
    1 2007-1-1 8:00:10 20070101 200 100 300
    2 2007-1-1 8:00:10 20070102 150 100 250
    3 2007-1-2 1:12:00 20070103 120 120但是我要的结果是
    入库时间                     ID     营业税    个人所得税   城建税    合计
    2007-01-01 8:00:25       20070101     200          100        0       300
                             20070102     150          0         100      250
    2007-01-01 8:00:25总共开了两张,       350          100       100      5502007-01-01 8:01:21       20070103      0          120         0      120  
    2007-01-01 8:01:21总共开了一张         0          120        0      120合计                                  350         220       100     670
      

  5.   

    如果长度相等的话可以用union all