我有一个平面文件,我使用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”
感谢任何帮助。
答案 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表中可能很有用。