繁体   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