使用sql在48小时内显示一条记录

时间:2014-12-03 18:47:20

标签: sql-server sql-server-2008 tsql

我的日期值存在问题,日期字段的数据类型是日期时间,但同时我在48小时内获得了相同ID的大量记录。目标只是在患者在48岁以内访问医院时返回一条记录。例如,如果患者A在2014年1月1日进入ER并再次回到2014年1月半,那么我只想显示第一次访问2014年1月1日。我真的相信这个问题就在这一行

AND A.[ADMT_TS] < DateAdd(d, 2, ADMT_TS)

我认为我需要先进行一些转换才能获得正确的值。 这是我的查询,请不要在这里选择声明之前我有其他查询,但我只发布此部分,我试图获得前48小时。

SELECT [ID], [LOCATION], [ADMT_TS] 
FROM ERS WHERE RN = 1
UNION ALL 
SELECT [ID], [LOCATION], [ADMT_TS] 
FROM ERS A 
WHERE RN > 1 AND EXISTS (SELECT 1 FROM ERS WHERE RN = 1 AND [ID] = A.[ID])
AND NOT EXISTS(SELECT 1 FROM ERS WHERE RN = 1 AND [ID] = A.[ID] AND A.[ADMT_TS] < DateAdd(d, 2, ADMT_TS))

1 个答案:

答案 0 :(得分:0)

这可行,但可能不是最好的选择。如果您发布一些数据并让我们知道ERS表中可能/将会有多少行,我可以根据需要调整查询

SELECT [Id]
      ,[Loc]
      ,MIN([admt_ts])
FROM [NewJunk].[dbo].[ERS]
WHERE RN = 1
GROUP BY id, loc