如何按日期范围分组?

时间:2018-02-08 18:53:46

标签: sql sql-server

我有3个字段:id,date,treatment。治疗有3种类型:感冒,发烧,霍乱。假设有1000名患者,第一名患者的数据看起来像这样

pt    treatment_date   treatment
A     05-05-2017          Cold
A     05-07-2017          Cold
A     05-09-2017          Fever
A     05-13-2017          Fever
A     05-15-2017          Cholera
A     05-17-2017          Cholera
A     05-19-2017          Cold
A     05-21-2017          Cold
A     05-23-2017          Fever

我需要输出看起来像这样 -

pt    start_date   end_date    treatment   Number_of_days  Conversion_date    Days_before_cholera(start date of cholera- end date of treatment immediately before it)
 A    05-05-2017   05-07-2017   Cold           2               0               0       
 A    05-09-2017   05-13-2017   Fever          4               0               0
 A    05-15-2017   05-17-2017   Cholera        2              05-13-2017       2
 A    05-19-2017   05-21-2017   Cold           2                0              0
 A    05-23-2017   05-23-2017   Fever          1                0              0

所有patient_ids继续。

2 个答案:

答案 0 :(得分:1)

这是一个“差距和岛屿”问题。我告诉你必须处理行的计算。您可以填写其他栏目。

解决这个问题的一种方法是使用行号的差异:

location_id

答案 1 :(得分:0)

你需要加入这张桌子。我试着沿着这些方向尝试。

An exception or error caused a run to abort: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)