查找系列中的最新时间

时间:2019-07-01 22:08:46

标签: sql oracle11g

我正在尝试使用一个查询来查找患者的第一读和最后读:

REC.inpatient_data_id
        ,Rec.PAT_ID
        ,IP_FLT_DATA. Template_ID
        , IP_FLT_DATA.Template_Name
        , IP_FLT_DATA.Display_Name
        ,IP_FLO_GP_DATA.FLO_MEAS_NAME
        ,IP_FLO_GP_DATA.DISP_NAME
        ,MEAS.FLO_MEAS_ID
        ,MEAS.MEAS_VALUE
        ,MEAS.RECORDED_TIME
        ,MEAS.line
        ,Min(Recorded_Time) Over(Partition By Rec.Pat_ID Order By Meas.Recorded_TIME) First_Time
        ,Max(Recorded_TIME) Over(Partition By Rec.Pat_ID Order By Meas.Recorded_TIME) Final_Time
FROM HCCLSC. IP_FLWSHT_REC REC
  LEFT OUTER JOIN HCCLSC.IP_FLWSHT_MEAS MEAS ON REC.FSD_ID=MEAS.FSD_ID
  LEFT OUTER JOIN HCCLSC.IP_FLO_GP_DATA ON IP_FLO_GP_DATA.FLO_MEAS_ID = MEAS.FLO_MEAS_ID
    LEFT OUTER JOIN HCCLSC.IP_FLT_DATA  ON IP_FLT_DATA.TEMPLATE_ID = MEAS.FLT_ID 
WHERE   --IP_FLO_GP_DATA.DISP_NAME like '%disorganized%'
  REC.inpatient_data_id=212126860810
  and 
  MEAS.FLO_MEAS_ID in (12436741, 12436742, 12436743, 12436744, 12436745, 12436746)

Min(Recorded_Time)给我所有行的正确答案。
但是,Max(Recorded_Time)只会将Recorded_Time吐给我,有人可以告诉我在这种情况下我做错了什么。

谢谢

1 个答案:

答案 0 :(得分:0)

删除Order By Meas.Recorded_TIME。它通过静默应用RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW来缩小窗口范围。

 Min(Recorded_Time) Over(Partition By Rec.Pat_ID) First_Time
,Max(Recorded_TIME) Over(Partition By Rec.Pat_ID) Final_Time