用到的字段:
materialtype 物资类别(材料,机电);barsumcash 金额;barmontype 币种 (RMB,USD,EUR)
thisyear 当年的1月1号 (xxxx-01-01);
thismonth 当月的1月1号 (xxxx-xx-01);
thisdate 当前时间 sysdate;
表是:purchase;需要的结果是:  1当年中 材料的 rmb总金额,usd总金额,eur总金额
                2当年中 机电的 rmb总金额,usd总金额,eur总金额
                3当月中 机电的 rmb总金额,usd总金额,eur总金额
                4当月中 机电的 rmb总金额,usd总金额,eur总金额需要返回 2列 12行的数据集,一列是 总金额值,一列是 这个金额的标示
(如 JMRMB  表示 机电,当月,rmb总金额;CYRMB 表示材料,当年,rmb总金额)

解决方案 »

  1.   

    SQL如下:先查询出按年的在union all上按月的,日期条件你需要检查一下,
    因为我不知道你thisyear和thismonth是字符型的还是日期型的
    select  decode(t.materialtype,'材料','CY','JY')||barmontype,sum(barsumcash)         
    from purchase t
    where    t.thisyear=to_char(sysdate,'yyyy')||'-01-01'
    group by decode(t.materialtype,'材料','CY','JY')||barmontype
    union all
    select  decode(t.materialtype,'材料','CM','JM')||barmontype,sum(barsumcash)         
    from purchase t
    where    t.thismonth=to_char(sysdate,'yyyy-mm')||'-01'
    group by decode(t.materialtype,'材料','CM','JM')||barmontype
      

  2.   

    4楼,thisyear和thismonth是日期形式的。
      

  3.   

    sum(barsumcash) flag 注释
    1000         JMRMB 机电当月人民币金额
    2000         JMEUR 机电当月欧元金额
    3000         JMUSD 机电当月美元金额
    4000         JYRMB 机电当年人民币金额
    5000         JYUSD 机电当年欧元金额
    6000         JYEUR 机电当年美元金额
    7000         CMRMB 材料当月人民币金额
    8000         CMEUR 材料当月欧元金额
    9000         CMUSD 材料当月美元金额
    10000         CYRMB 材料当年人民币金额
    11000         CYEUR 材料当年欧元金额
    12000         CYUSD 材料当年美元金额需要的是第一列和第二列!!!