我在同一张表中有一个医院就诊和预约就诊的数据库。有三个相关的列:
我遇到的问题是,即使病人钥匙将两者连接在一起,HOSP_DISCHRG_DT和APPT_CHECKIN_DT也永远不在同一行。因此,如果患者来医院就诊,然后在一周后再来进行随访,则他们被归类为不同的就诊,因此位于不同的行中。 (因此,这不像执行DATEDIFF那样简单)
我的目标: 我想设置一个指标:
注意:在第7天的任何时间进来的患者都应标记为1.例如,某患者于2019年2月6日上午1点去医院就诊,并对其进行随访。 2019年2月13日下午3点应标记为1)
请参见以下代码进行尝试:
SELECT PAT_KEY, HOSP_DISCHRG_DT, APPT_CHECKIN_DT,
CASE
WHEN DATEDIFF(day, cast (APPT_CHECKIN_DT as datetime), cast (HOSP_DISCHRG_DT as datetime)) <= 7 THEN 1
ELSE 0
END AS diff
FROM dbo.visit
WHERE HOSP_ADMIT_DT != 'NA' AND HOSP_DISCHRG_DT != 'NA'
AND
PAT_KEY IN (SELECT PAT_KEY FROM dbo.visit WHERE DICT_ENC_TYPE_KEY = 108)
ORDER BY PAT_KEY;
我希望看到一张带有专利密钥的表格,当它们进入访问时,还有另一列“ diff”(可以是1或0),并显示它们是否在一周前访问过。不幸的是,我实际上得到的是一张零表。
答案 0 :(得分:0)
尝试使用子查询获取所需的每一行,并对其进行datediff以获取您要查找的值。