【发布时间】:2019-11-27 12:51:57
【问题描述】:
我阅读了很多类似的问题,但没有找到适合我的解决方案。基本上,只有在特殊条件 (PFSP.EINKAUFS_KZ = 2) 为真时,我才希望有一个 where 子句 (AND PEKP.VORGANGS_ART = 'BE')。
我尝试过很多这样的方法:
SELECT *
FROM PFSP
LEFT OUTER JOIN PFAK on PFSP.RUECKMELDE_NR = PFAK.RUECKMELDE_NR
LEFT OUTER JOIN PEKP ON (PFSP.BESTELL_NR=PEKP.VORGANGS_NR)
AND (PFSP.BESTELL_POS_NR=PEKP.VORGANGS_POS_NR)
LEFT OUTER JOIN PMLB ON PFSP.KOMPONENTEN_ARTIKEL_NR=PMLB.ARTIKEL_NR
WHERE PFAK.KD_VORGANGS_NR = '910-001213'
AND PFSP.RUECKMELDE_STATUS = '3'
AND PFSP.BESCHAFFUNGSKENNER = 'F'
AND CASE PFSP.EINKAUFS_KZ
WHEN 2 THEN PEKP.VORGANGS_ART = 'BE'
END
但我不断收到错误:
'=' 附近的语法错误
【问题讨论】:
-
样本数据和期望的结果会有所帮助。你为什么要使用
LEFT JOIN,而WHERE子句只是在撤销它们? -
在
WHERE子句中使用AND/OR构造而不是CASE表达式通常会更好。 -
是否涉及空值?
标签: sql where-clause case-when