【发布时间】:2016-08-04 07:17:04
【问题描述】:
我正在尝试根据每日数据获取每月最后一天的价格。 ISIN 在映射表中,日期等是内容表。我应该如何构建查询以使其正常工作?
select b.isin, last_Day(a.date) End_date, a.PRICE
from MAPPING b,
CONTENT a
where b.ISIN in ('xxx')
and a.date >= '31Jul2010' AND a.date <= '31Aug2010'
and a.instid = b.instid
我应该得到 1 个结果,不是每日结果,而是特定月份的最后一天
b.isin last_day a.price
xxx 31/08/2010 p1
xxx 31/08/2010 p2
xxx 31/08/2010 p3
xxx 31/08/2010 p4
xxx 31/08/2010 p5
xxx 31/08/2010 p6
xxx 31/08/2010 p7
xxx 31/08/2010 p8
xxx 31/08/2010 p9
xxx 31/08/2010 p10
xxx 31/08/2010 p11
xxx 31/08/2010 p12
xxx 31/08/2010 p13
xxx 31/08/2010 p14
xxx 31/08/2010 p15
xxx 31/08/2010 p16
xxx 31/08/2010 p17
xxx 31/08/2010 p18
xxx 31/08/2010 p19
xxx 31/08/2010 p20
xxx 31/08/2010 p21
xxx 31/08/2010 p22
我故意隐藏了 isin 和价格(这些不是实际结果)。 但逻辑是一样的。应该是 xxx 31/08.2010 a.price 和这样的每个月的选择范围。
【问题讨论】:
-
今天的提示:切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。 -
您没有显示产生该输出的原始数据;每个日期有一行吗?每个月的最后一天是否总是(确切地)一行?
-
是的,每个日期正好一行。价格总是不同的,ISIN 总是一样的。由于数据库中的价格是每天的,我想获得特定时间范围(例如 3 年)的每月数据。感谢您的输入,我将在下面尝试您的解决方案。