두 테이블이 있습니다. STOCK_HIST는 값의 시간 순서 (DSEQKEY)를 포함합니다 (PRHIGH). 다른 테이블 (PHASE_KEYS_D)에는 PHASE_KEYS_D.BEGKEY ~ PHASE_KEYS_D.ENDKEY로 표시된 STOCK_HIST의 다양한 기간을 나타내는 STOCK_HIST의 시작 및 종료 키가 들어 있습니다. PHY_KEYS_D의 각 행의 BEGKEY와 ENDKEY 사이의 STOCK_HIST에서 가장 높은 PRHIGH를 반환하는 쿼리를 얻으려고합니다. 나는 다음을 시도했지만 그것이 항상 필요한 것을 반환하지는 않는다.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
미리 도움을 청하십시오!
변경 뭔가 제목 :
을 그리고 각 세부 행에 최대를 보여주고 싶었다 경우 의미있는. –