我有一张包含患者位置的表格。我正在努力找到第一个不是急诊室的患者位置。我尝试使用MIN
,但由于位置中包含数字,因此会拉出MIN
位置,但不一定是第一个位置。有一个与该位置相关联的日期时间字段,但我不确定如何将min
datetime
链接到第一个位置。任何帮助,将不胜感激。我的查询看起来像这样:
SELECT PatientName,
MRN,
CSN,
MIN (LOC) as FirstUnit,
MIN (DateTime)as FirstUnitTime
FROM Patients
WHERE LOC <> 'ED'
答案 0 :(得分:3)
我认为你想要每个病人的第一个单位。如果是,那么您可以使用row_number()
:
select PatientName, MRN, CSN, LOC as FirstUnit, DateTime as FirstUnitTime
from (select p.*,
row_number() over (partition by PatientName, MRN, CSN
order by datetime asc) as seqnum
from Patients p
where loc <> 'ED'
) p
where seqnum = 1;
row_number()
为一组行分配一个序号,其中该组由partition by
子句指定。数字按顺序排列,由order by
子句定义。因此,每个组中最旧的(第一行)被赋值为1.外部查询选择此行。