【发布时间】:2021-01-27 16:02:14
【问题描述】:
我想创建一个新列,显示同一 HC_Number 的最新约会日期。示例:HC_Number-2552 在 12 月 2 日、12 月 7 日和 12 月 25 日有 3 个约会。因此,显示最新约会的新列将显示 12 月 25 日,同时显示 12 月 2 日和 7 日的记录。
Select
a.HC_NUMBER
,a.APPOINTMENT_TYPE_FULL
,a.APPOINTMENT_DATE
,a.person_id
,a.APPT_BOOKED_BY
FROM [HIM_Clinical].[dbo].[APPOINTMENT_DATA] a (nolock) -----Main Data----
left join [ODS_CCL].[dbo].[ODS_CCL_ENCOUNTER] e (nolock) on a.ENCNTR_ID=e.ENCNTR_ID
WHERE a.APPOINTMENT_TYPE_FULL like '%Smart Checkup%'
AND a.Appointment_Status IN ('Checked Out','Checked In','No Show','Confirmed')
AND a.APPOINTMENT_DATE>='2020-12-01' AND a.APPOINTMENT_DATE<='2020-12-31'
【问题讨论】:
-
您的 DBMS 是什么?从 SQL 来看,这看起来像 SQL Server。这个对吗?请始终使用您正在使用的 DBMS 标记 SQL 问题,因为答案可能很大程度上取决于此。对于许多 DBMS,您甚至可以标记您正在使用的版本以进一步帮助我们。例如,此请求的标签可以是
sqlsql-serversql-server-2017。 -
附带说明:您在桌子上使用
nolock的原因是什么?您是在尝试解决某个问题,还是仅仅因为您在其他地方看到过这样做?您可能应该删除它。阅读sentryone.com/blog/aaronbertrand/bad-habits-nolock-everywhere。 -
您可以使用外部应用,它将查询每个 hc 号码的最大约会日期值
select hc_number, m.lastappointmentdate from yourtable a outer apply ( select top 1 m.appointment_date as lastappointmentdate from yourtable b on b.hc_number = a.hc_number order by appointment_date desc) m
标签: sql