簡體   English   中英

滿足某些條件的SQL僅選擇行

[英]SQL Select Only Rows Where Certain Condition is met

這似乎是一個基本問題,但我無法弄清楚(Oracle SQL)。

我需要為多個表中包含的某些訪問間隔拉出患者就診的日期,但是這些表之一包含多個訪問:

基線表: 患者編號訪視日期 (這是基線訪視)

程序表: 患者編號訪視日期 (這是程序訪問)

跟蹤表: 患者編號訪問間隔訪問日期 (其中“ 訪問間隔”包含“ 1_month訪問”,“ 2_month訪問”,“ 3_month訪問”等值)

我想將訪問日期的表格放在一起,每位患者一行,每位訪問間隔列標題。 我嘗試使用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個月的訪問日期(2個月列為空),另一行包含“基線”,“過程”和2個月的訪問日期(1個月列為空)。 我想為每個患者顯示1行,並填充所有日期。 我顯然錯過了一些東西(或者一般情況下效果不佳),所以我已經發布了幫助信息。

謝謝!

每個病人都有兩個間隔,所以每個病人都有兩排!

您的第一行是間隔為“ 1_month”的那一行,在這一行中,您只填充了該列,而另一行的間隔和度量為“ 2_month”。

為了獲得正確的結果,可以使用聚合:

SELECT
    BASE.PT AS "Patient Number",
    MAX(BASE.VIST_DATE) AS "Baseline",
    MAX(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
GROUP BY BASE.PT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM