[英]Case statement on a join in where clause
I am trying to use a CASE
statement inside a WHERE
clause for joining 2 tables.我正在尝试在WHERE
子句中使用CASE
语句来连接 2 个表。 I want to evaluate POSITION_NBR2
, if it is blank (null) then I want to join A.POSITION_NBR2 = B.POSITION_NBR
Else I want to join A.POSITION_NBR = B.POSITION_NBR
, however I am getting syntax errors while trying to run the following:我想评估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'
Use proper JOIN
syntax and reasonable table aliases:使用正确的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';
I'm generally not a fan of using CASE
for ON
and WHERE
clauses.我通常不喜欢将CASE
用于ON
和WHERE
子句。 In this case, though, it is only selectively choosing one column, so it doesn't bother me so much.但是,在这种情况下,它只是选择性地选择一列,所以它并没有给我带来太多困扰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.