2016-06-27 3 views
0

우리는 MS SQL Server 2012를 사용 중입니다. 환자는 다음 입원 날짜가 어떤 이유로 든 30 일 미만인지 알고 싶습니다. 동일한 공급자가 볼 필요는 없습니다다음 레코드를 읽기?

MRN ID가 동일하면 다음 레코드를 읽는 방법을 모르겠습니다. 현재있는 레코드와 다음 레코드 사이의 차이를 계산합니다 . 예를 들어

:

Record 1 : MRNID =33 Discharge date = 1/1/2016 
Record 2 : MRNID = 33 Admission date = 2/2/2016 

MRNIDs은 동일합니다, 그래서 나는 계산한다. 그런 다음 레코드 2를 레코드 3에 비교하고 동일한 프로세스를 수행합니다.

+0

체크 아웃 LEAD 기능. https://msdn.microsoft.com/en-us/library/hh213125.aspx – nscheaffer

+3

[지금까지 시도한 내용은 무엇입니까?] (http://whathaveyoutried.com) 질문을 작성하여 [ [mcve] 코드 에 문제가있는 경우 과 관련된 문제를 해결할 수 있습니다. 또한 [ask]를 읽어야합니다. –

답변

2

사용 리드() 윈도우 함수

select mrnid, 
     admission_date, 
     discharge_date, 
     lead(admission_date) over (partition by mrnid order by admission_date) next_date 
    from table; 

샘플 출력

mnrid admission_date lead(admission_date) 
33 2016-01-01 2016-01-02 
33 2016-01-02 2016-01-03 
33 2016-01-03 2016-01-04 
33 2016-01-04 null 
34 2016-01-01 2016-01-02 
34 2016-01-02 2016-01-03 
34 2016-01-03 2016-01-04 
34 2016-01-04 null 
+0

감사합니다. 이 예제에서 '납'이 어떻게 작동하는지 설명해 주시겠습니까? – SQLNewbie

+0

@SQLNewbie Lead는 admission_date에 의해 주문 된 다음 레코드 admission_date의 값을 검색합니다. mrnid (파티션 바이 바이)가 변경 될 때마다 주문이 다시 시작됩니다. https://msdn.microsoft.com/en-us/library/hh213125.aspx – vercelli

+0

@SQLNewbie 명확한 샘플 출력을 게시했습니다 – vercelli