1

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

以这个示例表为例,它显示了一天中不同时间从患者身上获取的生命体征读数:

在此处输入图像描述

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

在此处输入图像描述

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

4

3 回答 3

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
于 2013-05-20T15:34:26.140 回答
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
于 2013-05-20T15:26:59.650 回答
1

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

Select * From yrTable t
Where readingtimestamp = 
      (Select Min(readingtimestamp)
       From yrTable 
       Where PatientId = t.patientId
          And DateDiff(day, readingtimestamp, t.readingtimestamp) = 0)
于 2013-05-20T15:30:14.383 回答