仅返回日期的第一个结果

时间:2013-05-20 15:24:04

标签: sql sql-server tsql

我确定我知道怎么做但我的大脑现在让我失望

以此示例表格显示一天中不同时间从患者身上获取的生命体征读数:

enter image description here

如何每天只返回FIRST记录?所以我最终得到了这样的结果集:

enter image description here

请记住,在此示例中,表中的记录可能不按时间顺序排列。我只想查询每个PatientID的ReadingTimestamp列中的最低值,并显示该时间戳的相关温度,脉冲和呼吸。

3 个答案:

答案 0 :(得分:1)

select y1.* from your_table y1
inner join 
(
  select patientid, min(readingtimestamp) as ts
  from your_table
  group by date(readingtimestamp), patientid
) y2 on y2.patientid = y1.patientid 
     and y2.ts = y1.readingtimestamp

答案 1 :(得分:1)

正如您所说的那样......但是使用子查询来消除除每个患者和日期的第一个记录之外的所有记录......

Select * From yrTable t
Where readingtimestamp = 
      (Select Min(readingtimestamp)
       From yrTable 
       Where PatientId = t.patientId
          And DateDiff(day, readingtimestamp, t.readingtimestamp) = 0)

答案 2 :(得分:1)

    Select PatitentId, ReadingTimeStamp, Temperature,Pulse Respiration from 
(Select Row_Number() Over(Partition By PatitentId order by ReadingTimeStamp) as Row,* 
from TableName
) T where Row=1