如何聚合到组级别,按时间顺序排列和枚举组?(在SQL Server中)



在医院就诊时,患者可能会服用几种不同的药物配方,如下所示:

给药21年8月31日上午11:3321年8月31日下午6:259/1/21 8:559/1/21 10:00 PM9/21/21 10:00 PM9/21上午6:159/21下午3:309/21下午8:30[/tr>
遭遇 药物Adm_Num
1 A1
1 B
1 C
1 D4
1 B 21年9月2日上午11:27 5
1 B6
1 B7
1 B
1 D9

这是一种"间隙和岛";问题

一种方法是首先使用滞后或超前检查相邻行,以确定数据(药物(的变化位置,然后将结果中每行的所有前几行的值相加,以生成所需序列:

with c as (
select *, 
case when 
Lag(medication) over (partition by encounter order by Administration) = medication 
then 0 else 1 end Changed
from t
)
select Encounter, Medication, Administration, Adm_Num,
Sum(changed) over(partition by Encounter order by Administration) Formulation
from c;

相关内容

  • 没有找到相关文章

最新更新