比较SQL Server中的日期字段

时间:2010-04-07 13:22:05

标签: sql-server-2008 ssis

我有一个平面文件,我使用SSIS清理数据,输出看起来像:

MEDICAL    ADMIT     PATIENT     PATIENT         DATE OF    DX 
REC NO     DATE      NUMBER        NAME        DISCHARGE   Code     DRG #

123613    02/16/09  12413209  MORIBALDI ,GEMMA  02/19/09   428.20     988    
130897    01/23/09  12407193  TINLEY ,PATRICIA  01/23/09   535.10     392    
139367    02/27/09  36262509  THARPE ,GLORIA    03/05/09   562.10     392 

141954    02/25/09  72779499  SHUMATE ,VALERIA  02/25/09   112.84     370   
141954    03/07/09  36271732  SHUMATE ,VALERIA  03/10/09   493.92     203  

145299    01/21/09  12406294  BAUGH ,MARIA      01/21/09   366.17     117  

和报告(最终结果)附在屏幕截图中。

所以正在发生的事情是,如果同名或相同的帐号重复,则表示患者再次进入医院并需要包含在报告中。 ![替代文字] [1]

我需要做的是......

消除任何不重复的行(并非此文件中的每个人都被重新录取) 并比较日期以获得ReAdmitdate和ReDischargedate

我将数据转储到SQL表中并试图比较日期以找出“ReAdmitdate”和“ReDischargedate”

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

患者是否有唯一的标识符?我假设patient_number是每个患者的唯一标识符,而medical_rec_no是增量的。

此查询的工作原理是将患者记录加入来自同一患者的记录,这些记录具有稍后的录取日期。

SELECT p1.patient_number, p1.admit_date,
  p2.admit_date as readmit_date, p2.discharge_date AS redischarge_date
FROM patient p1
  INNER JOIN patient p2
    ON p1.patient_number = p2.patient_number AND
      p2.medical_rec_no <> p1.medical_rec_no
  LEFT OUTER JOIN patient p3
    ON p3.patient_number = p1.patient_number AND
      p3.medical_rec_no <> p1.medical_rec_no AND
      p3.admit_date < p2.admit_date
WHERE p3.patient_number IS NULL
ORDER BY p1.patient_number, p1.admit_date, p1.medical_rec_no

答案 1 :(得分:0)

我曾经在数据仓库团队的医院工作(构建整个组织使用的多维数据集),我们有访问号码,从那里我们可以确定它是否是预约集(或重新录取为你指的是)。您是否有任何约会号码和访问号码,将它们添加到您的SQL表中可能很有用。