[英]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
用於ON
和WHERE
子句。 但是,在這種情況下,它只是選擇性地選擇一列,所以它並沒有給我帶來太多困擾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.