2016-06-27 11 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

関連する問題