【发布时间】:2020-08-11 21:19:10
【问题描述】:
我正在寻找一个 SQL 查询。
表 1:源表
表 2:结果表
附上病人桌。在这里,我想找到每个患者的最高分、最高分日期、最低分和最低分日期。棘手的部分是,如果患者在两个不同的日期(10/5/2018 和 8/4/2020)具有相同的最高分(这里是 9),我们需要取最早的高分(10/5/2018) .同样,如果患者在两个不同日期(2019 年 3 月 1 日和 2020 年 4 月 2 日)的最低分相同(此处为 6),我们应该取最新的低分(2020 年 4 月 2 日)
表 1:源表包含单个患者的所有分数。患者 ID 是该表的主键。我想要一个看起来像表 2 的结果表。
我试过了
SELECT distinct
pat.PAT_NAME 'Patient Name'
, pat.PAT_ID
, CAST(pat.CONTACT_DATE AS DATE) 'Service Date'
, pat.MEAS_VALUE 'Score'
, [Row Number] = rank() OVER (PARTITION BY pat.PAT_ID ORDER BY CAST(pat.MEAS_VALUE AS int) DESC, CONTACT_DATE asc)
FROM Patient pat
WHERE pat.PAT_ID = 'A112233'
但是这段代码可以显示我最高或最低的分数。但这并不能满足我的所有要求。
【问题讨论】:
-
1.请将数据显示为格式化文本 - 而不是图像(最好是 DDL/DML 语句)。 2. 请向我们展示您的尝试 - SO 不是代码编写服务。
标签: sql sql-server