3 명 이상의 연속 약속을 놓친 모든 사람을 찾고 있습니다. 이 작업을 수행하는 데 windowing 함수를 사용할 수 있다고 믿지만, 막혀서 도움이 필요합니다. 여기 TSQL - 창 기능/순위
내가 무엇을 찾고 샘플입니다 : 다음 PATID = X001의 경우 1/12,1/14,1/15 누락 된 기준을 충족 그리고 PATID = X002 기준을 충족하지 않음.PATID DEPT DATE STATUS
x001 A002 1/1/2016 Missed
x001 A002 1/5/2016 Complete
x001 A002 1/8/2016 Missed
x001 A002 1/10/2016 Complete
x001 A002 1/12/2016 Missed
x001 A002 1/14/2016 Missed
x001 A002 1/15/2016 Missed
x001 A002 1/19/2016 Complete
x002 A003 1/1/2016 Missed
x002 A003 1/5/2016 Complete
x002 A003 1/8/2016 Missed
x002 A003 1/10/2016 Complete
x002 A003 1/12/2016 Missed
x002 A003 1/14/2016 Complete
x002 A003 1/15/2016 Missed
x002 A003 1/19/2016 Complete
이것은 내가 지금까지 가지고있는 것입니다. 내가 날짜로 새로운 상태의 변화에 올바른 휴식을 할당하는 방법을 파악하면
SELECT
PR.PATID
, PR.DEPT
, PR.DATE
, CASE WHEN PR.STATUS IN (3,4) THEN 'Cancel' WHEN PR.STATUS = 2 THEN 'COMPLETED' ELSE 'ERROR' END AS STATUS, ROW_NUMBER() OVER (PARTITION BY PR.PAT_ID,PR.DEPARTMENT_ID ORDER BY R.PAT_ID,PR.DEPARTMENT_ID,PR.CONTACT_DATE) AS RN -- Just numbers the rows
, COUNT(*) OVER (PARTITION BY PR.PAT_ID,PR.DEPARTMENT_ID, CASE WHEN PR.APPT_STATUS_C IN (3,4) AND PR.CANCEL_REASON_C <> 4 THEN 'Cancel' WHEN PR.APPT_STATUS_C = 2 THEN 'COMPLETED' ELSE 'ERROR' END) AS RNC -- Should have break at new statuses
FROM #PatsReturn AS PR
, 그때 3을 놓친 한 PATIDs를 (아마도 새로운 플래그 필드를 ??)를 식별 할 수있는 방법을 강구해야 + 연속 ....
도움을 주시면 대단히 감사하겠습니다.