我有两张桌子。STOCK_HIST 包含值 (PRHIGH) 的时间序列 (DSEQKEY)。另一个表 (PHASE_KEYS_D) 包含 STOCK_HIST 的开始和结束键,表示 STOCK_HIST 中由 PHASE_KEYS_D.BEGKEY 到 PHASE_KEYS_D.ENDKEY 标记的各个时间段。我试图让一个查询工作,它将在 PHASE_KEYS_D 中每一行的 BEGKEY 和 ENDKEY 之间返回 STOCK_HIST 中的最高 PRHIGH。我尝试了以下方法,但它并不总是返回它应该返回的内容。
select dseqkey,prhigh
from STOCK_HIST
where prhigh in
(
select max(prhigh)
from STOCK_HIST A, PHASE_KEYS_D B
where a.dseqkey between b.begkey and b.endkey
group by b.begkey
)
order by dseqkey desc
CREATE TABLE STOCK_HIST (DSEQKEY INT, PRHIGH MONEY)
DSEQKEY PRHIGH
1 1432.22
2 1433.10
3 1435.55
4 1440.21
5 1422.20
6 1415.10
7 1401.99
8 1433.10
CREATE TABLE PHASE_KEYS_D (BEGKEY INT, ENDKEY INT)
BEGKEY ENDKEY
1 3
4 5
6 8
在此先感谢您的帮助!