【发布时间】:2014-02-18 20:52:18
【问题描述】:
这似乎是一个基本问题,但我就是想不通(Oracle SQL)。
我需要提取多个表中包含的特定就诊间隔的患者就诊日期,但是这些表之一包含多次就诊:
基线表:患者编号,就诊日期(这是基线就诊)
程序表:患者编号,就诊日期(这是程序就诊)
跟进表:Patient Number、就诊间隔、就诊日期(其中就诊间隔包含以下值如“1 个月访问”、“2 个月访问”、“3 个月访问”等)
我想整理一张就诊日期表,将每位患者作为一行,将每个就诊间隔作为列标题。我尝试使用 CASE 语句执行此操作,但我为单个患者返回多行。
这是我目前所拥有的:
SELECT DISTINCT
BASE.PT AS "Patient Number",
BASE.VIST_DATE AS "Baseline",
PROC.VISIT_DATE AS "Procedure",
CASE
WHEN FOLLOWUP.VISIT_INTERVAL = '1_Month'
THEN FOLLOWUP.VISIT_DATE
ELSE NULL END AS "1 Month",
CASE
WHEN FOLLOWUP.VISIT_INTERVAL = '2_Month'
THEN FOLLOWUP.VISIT_DATE
ELSE NULL END AS "2 Month"
FROM BASE
LEFT JOIN PROC
ON BASE.PT=PROC.PT
LEFT JOIN FOLLOWUP
ON BASE.PT=FOLLOWUP.PT
这将为每位患者返回 2 行,其中 1 行包含基线、程序和 1 个月的就诊日期(2 个月的列为空),另一行包含基线、程序和 2 个月的就诊日期(1 个月的列为空)。我想为每位患者显示 1 行,并填充所有日期。我显然遗漏了一些东西(或者总体上做得很糟糕),所以我发帖寻求帮助。
谢谢!
【问题讨论】: