选择两个不同行之间的日期差

时间:2019-03-23 15:14:31

标签: sql tsql

我在同一张表中有一个医院就诊和预约就诊的数据库。有三个相关的列:

  1. PAT_KEY,这是患者密钥
  2. HOSP_DISCHRG_DT,这是患者出院的日期
  3. APPT_CHECKIN_DT,这是患者进行随访的日期

我遇到的问题是,即使病人钥匙将两者连接在一起,HOSP_DISCHRG_DT和APPT_CHECKIN_DT也永远不在同一行。因此,如果患者来医院就诊,然后在一周后再来进行随访,则他们被归类为不同的就诊,因此位于不同的行中。 (因此,这不像执行DATEDIFF那样简单)

我的目标: 我想设置一个指标:

  • 1,如果在出院后的7天内看到患者要预约。
  • 0(如果未在7天之内进行随访预约)。

注意:在第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),并显示它们是否在一周前访问过。不幸的是,我实际上得到的是一张零表。

1 个答案:

答案 0 :(得分:0)

尝试使用子查询获取所需的每一行,并对其进行datediff以获取您要查找的值。