2013-07-22 3 views
0

특정 프로세스 후 20 일 범위의 레코드를 가져와야합니다. 아래 그림과 같이특정 레코드의 N 일 이내 행 선택

데이터를 포함하는 테이블 medical 있습니다 :

여기

SQLFIDDLE:

enter image description here

규칙은 다음과 같습니다 그룹 A3 인 경우 이십일 내의 모든 작업은 (to the same patient in the same hospital)는 무료입니다 요금.

여기에서 모든 09.02.2013까지의 작업은 무료 여야합니다. (20.01.2013 + 20 일)

질문 : A3 그룹 프로세스가 적용된 날로부터 20 일 이내에 모든 레코드를 검색하려면 어떻게합니까?

+0

중첩 된 쿼리를 만들고 날짜 계산을 수행하거나 LAG 함수를 검색하여 기간을 지날 때까지 행을 이동할 수 있습니다. – Randy

+0

나는 래그 기능을 시도했는데 시간 간격, 행 간격 만 허용하지 않았다. – bonsvr

답변

1

나는 dat의 데이터 유형을 자유롭게 변경하고 그룹의 이름을 groupe로 변경했습니다.

WITH modified_medical 
    AS (SELECT hospital, pid, dat 
      FROM medical 
      WHERE groupe = 'A3') 
    SELECT * 
    FROM medical a, modified_medical b 
    WHERE  b.hospital = a.hospital 
     AND b.pid = a.pid 
     AND a.dat BETWEEN b.dat AND b.dat + 20 
ORDER BY a.hospital, a.pid, a.dat; 

샘플 바이올린 here.