У меня есть две таблицы. STOCK_HIST содержит временную последовательность (DSEQKEY) значений (PRHIGH). В другой таблице (PHASE_KEYS_D) содержатся начальные и конечные ключи для STOCK_HIST, представляющие различные периоды времени в STOCK_HIST, отмеченные PHASE_KEYS_D.BEGKEY через PHASE_KEYS_D.ENDKEY. Я пытаюсь получить работу запроса, которая вернет самую высокую PRHIGH в STOCK_HIST между BEGKEY и ENDKEY каждой строки в PHASE_KEYS_D. Я пробовал следующее, но он не всегда возвращает то, что нужно.SQL Server 2008 R2 - Подзапрос для возврата высокого значения
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
Заранее благодарим за помощь!
изменить название на что-то осмысленный. –