包含多个条件的sql server案例

ruarlubt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(359)

嗨,我在第二个when条件中遇到了一个sql问题 WHEN '1' THEN ('1000', '1001', '1003', '1005') END) 问题是: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near ','. (102) 我的剧本:

SELECT MTRSUBSTITUTE.MTRL, MTRSUBSTITUTE.CODE AS EAN, MTRSUBSTITUTE.NAME AS WebName, MTRPACK.CODE AS SEAN, MTRSUBSTITUTE.MTRDIM1, MTRSUBSTITUTE.MTRDIM2, MTRL.CDIMCATEG1, MTRL.CDIMCATEG2, MTRL.WEBVIEW AS OnWeb, MTREXTRA.BOOL03 AS SkroutzFeed, MTRSUBSTITUTE.PRICER, MTREXTRA.BOOL01 AS Katastimata, SUM(ISNULL(CDIMFINDATA.OPNIMPQTY1,0)+ISNULL(CDIMFINDATA.IMPQTY1,0)-ISNULL(CDIMFINDATA.EXPQTY1,0)) AS Qty

  FROM CDIMFINDATA Inner JOIN MTRSUBSTITUTE ON CDIMFINDATA.MTRL=MTRSUBSTITUTE.MTRL AND CDIMFINDATA.CDIMLINES1=MTRSUBSTITUTE.MTRDIM1 AND CDIMFINDATA.CDIMLINES2=MTRSUBSTITUTE.MTRDIM2 INNER JOIN MTRL ON MTRSUBSTITUTE.MTRL=MTRL.MTRL

  INNER JOIN MTREXTRA ON MTREXTRA.MTRL=MTRSUBSTITUTE.MTRL

  LEFT OUTER JOIN MTRPACK ON MTRSUBSTITUTE.MTRPACK=MTRPACK.MTRPACK

  WHERE WEBVIEW=1 AND MTRSUBSTITUTE.ISACTIVE=1 AND MTRSUBSTITUTE.COMPANY=100 AND CDIMFINDATA.FISCPRD=2020 AND MTRL.SODTYPE=51   AND MTRL.MTRL=6139 AND  CDIMFINDATA.WHOUSE IN (CASE MTREXTRA.BOOL01 WHEN '0' THEN ('1001') WHEN '1' THEN ('1000', '1001', '1003', '1005') END)

  GROUP BY MTRSUBSTITUTE.MTRL, MTRSUBSTITUTE.CODE, MTRSUBSTITUTE.NAME, MTRPACK.CODE, MTRSUBSTITUTE.MTRDIM1, MTRSUBSTITUTE.MTRDIM2, MTRL.CDIMCATEG1, MTRL.CDIMCATEG2, MTRL.WEBVIEW, MTRSUBSTITUTE.PRICER, MTREXTRA.BOOL03, MTREXTRA.BOOL01, CDIMFINDATA.WHOUSE ORDER BY MTRSUBSTITUTE.CODE
l7mqbcuq

l7mqbcuq1#

case表达式不能返回值列表,例如,您必须执行其他操作

AND  (
MTREXTRA.BOOL01 = '0' AND CDIMFINDATA.WHOUSE = '1001'
OR MTREXTRA.BOOL01 = '1' AND CDIMFINDATA.WHOUSE IN ('1000', '1001', '1003', '1005')
)

相关问题