简体   繁体   中英

SQL Server case with multiple conditions within THEN

Hi I've got a problem with the sql with the second When condition

WHEN '1' THEN ('1000', '1001', '1003', '1005') END)

The problem is: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near ','. (102) [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near ','. (102)

My script:

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

Case expressions can't return list of values, you've got to do something else, for example

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM