我在我的子句中使用这样的CASE
表达式:WHERE
SELECT *
FROM ASPECT.WR_AM_ADT_SUMM
INNER JOIN ASPECT.WR_AM_DLR_DTL
ON AS_CNTRY_CD = DD_CNTRY_CD AND
AS_DLR_CD = DD_DLR_CD AND
AS_YEAR = DD_YEAR
RIGHT JOIN ASPECT.DEALER_MASTER
ON COUNTRY_CD = AS_CNTRY_CD AND
DEALER_CDE_VEGA = AS_DLR_CD
WHERE
COUNTRY_CD = '81930' AND
LANG_CD = '02' AND
(CASE PARM_ADTR_ID
WHEN 'ALL' THEN (AS_ADTR_ID_P IS NULL OR AS_ADTR_ID_P LIKE '%')
ELSE AS_ADTR_ID_P LIKE LOC_ADTR_ID
END) AND
DEALER_CDE_VEGA LIKE '8%'
;
在上面的查询中,当我传入输入参数时'ALL'
,PARM_ADTR_ID
第一个条件应该有效,否则第二个条件应该有效。
截至目前,它给出了语法错误,谁能告诉我该怎么做?
您不能
CASE
以这种方式在 DB2 中使用表达式。表达式的结果CASE
不能是布尔值。如果要盲目地翻译您的代码,您的WHERE
子句可能看起来像这样:但是,如果您删除冗余条件,它可以像这样简化(HT 到 ypercubeᵀᴹ,谁更早醒来:)