T-SQL选择第一个实例

时间:2014-01-21 17:29:23

标签: sql tsql

我有一张包含患者位置的表格。我正在努力找到第一个不是急诊室的患者位置。我尝试使用MIN,但由于位置中包含数字,因此会拉出MIN位置,但不一定是第一个位置。有一个与该位置相关联的日期时间字段,但我不确定如何将min datetime链接到第一个位置。任何帮助,将不胜感激。我的查询看起来像这样:

SELECT PatientName,
       MRN,
       CSN,
       MIN (LOC) as FirstUnit,
       MIN (DateTime)as FirstUnitTime
FROM Patients
WHERE LOC <> 'ED'

1 个答案:

答案 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.外部查询选择此行。