统计产品的价格货币汇率由1月1变(以前的汇率不变)改为1日1变,查询统计怎么修改最方便?以前的汇率是月汇率,现在的汇率是日汇率

tangyong_delphi 2010-09-02 09:12:03
统计产品的价格货币汇率由1月1变(以前的汇率不变)改为1日1变,查询统计怎么修改最方便?以前的汇率是月汇率,现在的汇率是日汇率

以前的写法
inner join 货币 ON 货币.币种=价格.币种 and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')

如果只是修改trunc(产品的销售日期,'DD')=trunc(货币汇率的日期,'DD'),以前的数据就只能够统计每月1日的数据。

数据代码太多,尽量不要用Union all
...全文
152 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangyong_delphi 2010-09-03
  • 打赏
  • 举报
回复
请各位高手指点!
hyee 2010-09-03
  • 打赏
  • 举报
回复
你的汇率基础表改为一天一条数据,修改生成汇率数据的代码的话工作量不大
vber1010 2010-09-03
  • 打赏
  • 举报
回复
应该是这个意思:

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

csuxp2008 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vber1010 的回复:]
难道是这个意si?:
to_char(产品的销售日期,'DD')=to_char(货币汇率的日期,'DD'),
[/Quote]

有点像
vber1010 2010-09-03
  • 打赏
  • 举报
回复
难道是这个意si?:
to_char(产品的销售日期,'DD')=to_char(货币汇率的日期,'DD'),
robin_ares 2010-09-03
  • 打赏
  • 举报
回复
and
(
以前的数据 and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')
or
现在的数据 and trunc(产品的销售日期,'DD')=trunc(货币汇率的日期,'DD')
)
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tangyong_delphi 的回复:]
and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')能不能用case语句写?
[/Quote]case语句是可以用的就是要看你怎么用了。
列点数据出来,顺便说下你想要的结果
minitoy 2010-09-03
  • 打赏
  • 举报
回复
dd应该就可以了.
tangyong_delphi 2010-09-03
  • 打赏
  • 举报
回复
我抽空去试一试vber1010方法
tangyong_delphi 2010-09-03
  • 打赏
  • 举报
回复
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来连接查询
tangyong_delphi 2010-09-02
  • 打赏
  • 举报
回复
and trunc(产品的销售日期,'MM')=trunc(货币汇率的日期,'MM')能不能用case语句写?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧