【发布时间】:2025-11-25 01:00:01
【问题描述】:
我正在尝试每月查找患者风险级别的变化。使用下面的数据。我想看看 - 一个月内有多少患者的风险水平升高。例如:在下表中,截至 2021 年 5 月 9 日,John 的风险级别为“低”,而 2021 年 5 月 10 日风险增加到“高”。所以在 5 月,如果我为风险增加的患者创建条形图,我会算上 John
+----+------------+------------+----------------+
| ID | MemberName | Risk level | Discharge Date |
+----+------------+------------+----------------+
| 1 | John Doe | Low | 03/05/2021 |
+----+------------+------------+----------------+
| 1 | John Doe | Medium | 05/10/2021 |
+----+------------+------------+----------------+
| 1 | John Doe | High | 06/10/2021 |
+----+------------+------------+----------------+
| 2 | Sam | Medium | 05/10/2021 |
+----+------------+------------+----------------+
| 2 | Sam | Low | 05/20/2021 |
+----+------------+------------+----------------+
查询
SELECT [ID], [MemberName], [Risk level], [Discharge Date],
DATEADD(month, DATEDIFF(month, 0, [Discharge Date]), 0) as StartOfMonth,
COUNT(*) OVER (PARTITION BY ID, MONTH([Discharge Date])) as Increase_Level
--Decrease level
from Member_Risk
预期输出
+----+------------+--------------+------------------------+------------------------+
| ID | MemberName | StartOfMonth | Increase_In_Risk_Level | Decrease_In_Risk_Level |
+----+------------+--------------+------------------------+------------------------+
| 1 | John Doe | 03/01/2021 | No | No |
+----+------------+--------------+------------------------+------------------------+
| 1 | John Doe | 05/01/2021 | Yes | No |
+----+------------+--------------+------------------------+------------------------+
| 1 | John Doe | 06/01/2021 | Yes | No |
+----+------------+--------------+------------------------+------------------------+
| 2 | Sam | 05/01/2021 | No | Yes |
+----+------------+--------------+------------------------+------------------------+
由于 Sam 将风险级别从“中”更改为“低”,即降低,因此 Decrease_In_Risk_Level 标志更新为“是”
【问题讨论】:
标签: sql sql-server window-functions partition