table1:
    Company_Name         varchar2(100)  --公司名称
    Tax_Type             varchar2(10)   --税收种类
    Tax_Time             number(8)      --上缴时间
    Tax_Number           number(12)     --税收金额
例如:
    Company_Name    Tax_Type      Tax_Time      Tax_Number
    北京公司        所得税        20030603       1000
    北京公司        所得税        20030703       2000
    北京公司        劳动税        20030605       3000
    上海公司        劳动税        20030705       4000
      ...            ...            ....         ....
想得到<<北京公司>>的上缴税收金额:  
                  当月所缴金额     去年所缴总金额     所有数据的总金额
      所得税     
      劳动税
      ....      
注意:不能写存储过程或者其他的,我是在外部当连接字调用的.一句语句,例如:select ...大家看能不能用自连接实现这个功能啊?最好给我写成现成的句子能够调试的,我想的脑子有点昏了...

解决方案 »

  1.   

    select sum1,sum2,sum3
    from 
    (
    select Company_Name,Tax_Type,Tax_Time, sum(Tax_Number)  sum1
    from tbl 
    where substr(to_char(tax_time),1,6) = substr(to_char(sysdate,'yyyymmdd'),1,6)
    group by Company_Name,Tax_Type,Tax_Time) tbl_a,  --'当月所缴金额'表
    (
    select Company_Name,Tax_Type,Tax_Time, sum(Tax_Number) sum2
    from tbl 
    where substr(to_char(tax_time),1,4) = substr(to_char(sysdate1,'yyyymmdd'),1,4)
    group by Company_Name,Tax_Type,Tax_Time) tbl_b ,--'去年所缴总金额'表
    (
    select Company_Name,Tax_Type,Tax_Time, sum(Tax_Number) sum3
    from tbl 
    group by Company_Name,Tax_Type,Tax_Time) tbl_b  --'所有数据的总金额'表
    where tbl_a.Company_Name = tbl_b.Company_Name
    and tbl_b.Company_Name = tbl_c.Company_Name
    and tbl_a.Company_Name = '北京'注意:
       1)如果没问题,可以 tbl_a.Company_Name = '北京' 条件分别放到 tbl_a,b,c中。
       2)测试去掉注释。
      

  2.   

    select和group by子句中不应该有Tax_Time,另外'去年所缴总金额'计算有误,年份应减1.