해당 행의 날짜 (Discharge_Dt)에서 지난 30 일을 동적으로 참조하는 데이터 집합의 각 레코드에 대해 Patient_ID로 MIN 날짜를 계산하려고합니다. 나의 초기 생각은 창 함수를 사용하는 것이었지만, 나는 가까운 서브 쿼리를 선택했다. 그러나 내가 필요한 것은 아니다.SQL에서 롤링 기간 내의 레코드에 대한 MIN 값을 식별하는 방법
내 샘플 쿼리에는 MIN Discharge_Dt를 지난 30 일로 제한하는 로직이 없습니다. 즉, 주어진 행에 대해 30 일 이상 경과 한 MIN Discharge_Dt를 원하지 않습니다.
예제 쿼리 :
SELECT Patient_ID,
Discharge_Dt,
/* Calculating the MIN Discharge_Dt by Patient_ID for the last 30
days based upon the Discharge_Dt for that row */
(SELECT MIN(Discharge_Dt)
FROM admissions_ds AS b
WHERE a.Patient_ID = b.Patient_ID AND
a.Discharge_Dt >= DATEADD('D', -30, GETDATE())) AS MIN_Dt
FROM admissions_ds AS a
원하는 출력 표 :
여기Patient_ID | Discharge_Dt | MIN_Dt
10 | 2017-08-15 | 2017-08-15
10 | 2017-08-31 | 2017-08-15
10 | 2017-09-21 | 2017-08-31
15 | 2017-07-01 | 2017-07-01
15 | 2017-07-18 | 2017-07-01
20 | 2017-05-05 | 2017-05-05
25 | 2017-09-24 | 2017-09-24
실제로 사용하는 dbms는 어느 것입니까? 이 쿼리는 실제로 PostgreSQL과 MS SQL Server 모두에서 실행됩니까? – jarlh
출력 옆에도 간단한 데이터를 추가 할 수 있습니까? –
@jarlh, Amazon Redshift를 사용하고 있지만이 문제에 대한 구문은 dbms간에 다소 유사해야하므로 내 질문에 더 많은 잠재 고객이 도달 할 수 있기를 기대하면서 SQL Server를 포함 시켰습니다. – izzy84