2014-12-03 83 views
-2

我有我的日期值的问题,日期字段的数据类型是日期时间,但在同一时间我在48小时内获得相同的ID很多记录。我们的目标仅仅是当患者在48内访问医院时才返回一条记录。例如,如果患者A在2014年1月1日去ER并再次返回到1/2/2014,那么我只想显示第一次访问哪个1/1/2014。我真的相信这个问题是在这条线在48小时内显示一条记录使用sql

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

如果患者在3月1日,和1月4日?你期望看到什么? – 2014-12-03 18:57:32

+0

如果您使用sqlfiddle.com并发布了一些数据,它将会非常有帮助。您确实在寻找每位使用ER的患者的首次发生,是否正确? – Dbloch 2014-12-03 18:58:49

+0

您是仅将日期值存储在ADMT_TS中,还是包含日期和时间值?额外的时间可能会让你烦恼。另外,如何设置/分配“RN”?那里有多余的“1”行吗?该查询没有提供如何将基础数据“融合在一起”的指示。 – 2014-12-03 19:17:08

回答

0

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

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