簡體   English   中英

使用 join with case 語句

[英]using join with case statement

我正在嘗試加入案例陳述。

我下面的查詢,我想做的是基於這個條件加入:“如果程序是 28,那么檢查 2 件事(和 t1.DrOfrecord = 'T' 或 T1.PrimClin = T)如果不檢查一個(PrimClin = T)”

嘗試 #1:

SELECT t1.DrOfRecord,  t1.*
FROM FD__PROGRAM_CLIENT AS T0
LEFT OUTER JOIN FD__STAFF_ASSIGNED AS T1 ON T0.OP__DOCID = T1.programAdmitKey
                                         AND T1.DrOfRecord = 'T'
      (case when t0.PgmKey = 28 then OR  t1.PrimClin = 'T' end ) 

嘗試#2:

SELECT t1.DrOfRecord, t1.*
FROM FD__PROGRAM_CLIENT AS T0
LEFT OUTER JOIN FD__STAFF_ASSIGNED AS T1 ON T0.OP__DOCID = T1.programAdmitKey 
                                         AND CASE WHEN t0.PgmKey = 28 
                                                      THEN t1.DrOfRecord = 'T' OR t1.PrimClin = 'T' 
                                                      ELSE t1.PrimClin = 'T' 
                                             END

您的查詢語法不正確。 您不能像那樣在連接的 ON 子句中使用 case 語句。

以下是查詢的正確語法:

SELECT t1.DrOfRecord, t1.*
FROM FD__PROGRAM_CLIENT AS T0
LEFT OUTER JOIN FD__STAFF_ASSIGNED AS T1
ON T0.OP__DOCID = T1.programAdmitKey
AND (T1.PrimClin = 'T' OR (T1.DrOfrecord = 'T' AND T0.PgmKey = 28))

如果我正確理解您的邏輯,您需要所有滿足PrimClin = 'T'或其他兩個條件的記錄。

你可以在沒有CASE WHEN的情況下這樣做:

SELECT t1.DrOfRecord,  t1.*
FROM  FD__PROGRAM_CLIENT AS T0
LEFT OUTER JOIN FD__STAFF_ASSIGNED AS T1 
  ON (T0.PgmKey = 28 AND (t1.DrOfrecord = 'T' or T1.PrimClin = T) )
     OR (T0.PgmKey <> 28 AND (PrimClin = T) )

暫無
暫無

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

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