SQL-递增组号的窗口函数

时间:2019-02-28 23:25:58

标签: sql sql-server tsql

我有一张就诊数据表。我想确定患者从一个位置移到另一个位置的频率。我的源数据库使用的是SQL Server 2008,因此无法使用LAG窗口功能。

我首先要区分每个患者随时间变化的每个Location_Name。下面的Desired_Result列显示了我希望得到的结果-每次相同的Patient_ID的Location_Name更改时,该列都会递增1。请注意,Patient_ID 1的最终更改是将返回到先前的位置,我想将其视为位置的变化。

Patient_ID | Location_Name | Contact_Date | Desired_Result
1          | Site A        | 1/1/2019     | 1
1          | Site A        | 1/2/2019     | 1
1          | Site B        | 1/3/2019     | 2   
1          | Site B        | 1/4/2019     | 2
1          | Site C        | 1/5/2019     | 3
1          | Site C        | 1/6/2019     | 3
1          | Site C        | 1/7/2019     | 3
1          | Site A        | 1/8/2019     | 4
2          | Site B        | 1/1/2019     | 1
2          | Site B        | 1/4/2019     | 1
2          | Site B        | 1/9/2019     | 1

在SQL Server 2008中有可能吗?谢谢!

1 个答案:

答案 0 :(得分:3)

这是“群岛”问题的一种变体。您可以使用行号的不同来描述组:

colorMatched