首页 > 解决方案 > 在 THEN 中具有多个条件的 SQL Server 案例

问题描述

嗨,我在第二个 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

标签: sql

解决方案


案例表达式不能返回值列表,你必须做其他事情,例如

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

推荐阅读