-1
我使用在我的WHERE子句这样CASE表达式:如何在WHERE子句中使用CASE表达式?
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输入参数然后第一条件应该工作,否则所述第二条件应该工作。
截至目前它给语法错误,有谁能告诉我如何做到这一点?
1]保存自己将来头痛,始终使'FROM'引用表与保证是有行,和任何“可选”'LEFT JOIN'ed(本质上,翻转当前的一些引用)。 2]永远不要使用'SELECT *',总是明确列出你的输出列。 3]只要“AS_ADTR_ID_P”永远不为空,“全部”条件是不必要的。没有通配符的'LIKE'与'='相同。 4] **语法错误是什么**?所需的信息,并可能是一个很大的线索给你。不过,我期望它抱怨说'PARM_ADTR_ID'实际上并没有被引用为主变量。 –