统计产品的价格货币汇率由1月1变(以前的汇率不变)改为1日1变,查询统计怎么修改最方便?以前的汇率是月汇率,现在的汇率是日汇率以前的写法
inner join 货币 ON 货币.币种=价格.币种   and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')如果只是修改trunc(产品的销售日期,'DD')=trunc(货币汇率的日期,'DD'),以前的数据就只能够统计每月1日的数据。数据代码太多,尽量不要用Union all

解决方案 »

  1.   

    and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')能不能用case语句写?
      

  2.   

    case语句是可以用的就是要看你怎么用了。
    列点数据出来,顺便说下你想要的结果
      

  3.   

    and 
    (
    以前的数据 and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')    
    or  
    现在的数据 and trunc(产品的销售日期,'DD')=trunc(货币汇率的日期,'DD')
    )
      

  4.   

    难道是这个意si?:
    to_char(产品的销售日期,'DD')=to_char(货币汇率的日期,'DD'),
      

  5.   

    应该是这个意思: where decode(sign(产品的销售日期 - 按月或日统计的分界时间),
                  1,
                  trunc(产品的销售日期, 'MM'),
                  trunc(产品的销售日期, 'dd')) =
           (case sign(产品的销售日期 - 按月或日统计的分界时间) when 1 then
            trunc(货币汇率的日期, 'MM') else trunc(货币汇率的日期, 'DD'))
      

  6.   

    a表(产品代码,销售日期,销售金额)
    b表(产品代码,货币币种)
    C表(货币币种,汇率,汇率日期) (以前该表的汇率日期是月,现在该表的汇率日期是日,以前的数据不动)需要的数据无非是
    a表.产品代码 ,销售日期(按照月或者日统计),销售金额select a.产品代码 , trunc(a.销售日期,'MM') ,sum(a.销售金额/c.汇率) from a
    inner join b inner join on a.产品代码=b.产品代码
    inner join c inner join on c.货币币种=b.货币币种 and trunc(c.汇率日期,'MM')=trunc(a.销售日期,'MM')
    group  by a.产品代码 , trunc(a.销售日期,'MM')这是最简的代码,实际代码要复杂很多。
    现在问题出在C表(货币币种,汇率,汇率日期),以前该表的汇率日期是月,现在该表的汇率日期是日,以前的数据不动)
    从本月起汇率日期有月改为日。我需要统计从前几年开始到现在的日期,and trunc(c.汇率日期,'MM')=trunc(a.销售日期,'MM')该怎么改最方便?能够用case语句么,小于本月的日期用trunc(c.汇率日期,'MM')=trunc(a.销售日期,'MM'),从本月开始的日期用trunc(c.汇率日期,'DD')=trunc(a.销售日期,'DD') 。因为实际代码很长,我不想用Union all来连接查询