我的日期值存在问题,日期字段的数据类型是日期时间,但同时我在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))
答案 0 :(得分:0)
这可行,但可能不是最好的选择。如果您发布一些数据并让我们知道ERS表中可能/将会有多少行,我可以根据需要调整查询
SELECT [Id]
,[Loc]
,MIN([admt_ts])
FROM [NewJunk].[dbo].[ERS]
WHERE RN = 1
GROUP BY id, loc