簡體   English   中英

在 where 子句中加入的 case 語句

[英]Case statement on a join in where clause

我正在嘗試在WHERE子句中使用CASE語句來連接 2 個表。 我想評估POSITION_NBR2 ,如果它是空白(空),那么我想加入A.POSITION_NBR2 = B.POSITION_NBR否則我想加入A.POSITION_NBR = B.POSITION_NBR ,但是我在嘗試運行以下命令時遇到語法錯誤:

UPDATE #WORKTABLE
SET SLT_MEMBER = B.NAME
FROM PS_GHS_FTE_SLT A,
     PS_EMPLOYEES B,
     #WORKTABLE C
WHERE 
  CASE WHEN A.POSITION_NBR2  <> '' THEN A.POSITION_NBR2 = B.POSITION_NBR
       ELSE A.POSITION_NBR = B.POSITION_NBR
       END
  AND A.DEPTID COLLATE Latin1_General_BIN = C.DEPTID COLLATE Latin1_General_BIN
  AND B.EMPL_STATUS = 'A'

使用正確的JOIN語法和合理的表別名:

UPDATE WT
    SET SLT_MEMBER = E.NAME
FROM PS_GHS_FTE_SLT GFS JOIN
     PS_EMPLOYEES E
     ON E.POSITION_NBR = (CASE WHEN GFS.POSITION_NBR2 <> '' THEN GFS.POSITION_NBR2 ELSE GFS.POSITION_NBR
                          END) JOIN
     #WORKTABLE WT
     ON GFS.DEPTID COLLATE Latin1_General_BIN = WT.DEPTID COLLATE Latin1_General_BIN 
WHERE E.EMPL_STATUS = 'A';

我通常不喜歡將CASE用於ONWHERE子句。 但是,在這種情況下,它只是選擇性地選擇一列,所以它並沒有給我帶來太多困擾。

暫無
暫無

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

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