如何在SQL查询中的单个参数上应用多个案例条件
我有以下(缩写)代码:
WHERE analysis.debtor.gender=CASE WHEN ?='Men' THEN 'MALE' ELSE 'FEMALE' END
这工作,但我想有多个相同的参数,?的情况下,即。
WHEN ?='Men' THEN 'MALE', WHEN ?='Female' THEN Female ELSE
它应该包括男人和女人。 我如何在我的代码中实现这个?
使用OR
添加另一个条件:
WHERE analysis.debtor.gender=CASE WHEN ?='Men' THEN 'MALE' ELSE 'FEMALE' END OR (? NOT IN ('Men', 'Female'))
你可以有一个case语句
CASE COLUMN_NAME WHEN 'Men' THEN 'MALE' WHEN 'Female' THEN 'FEMALE' ELSE 'MEN AND WOMEN' END
如果您提供完整的查询,将对您有所帮助
如果你只有确切的平等条件,那么你可以这样做:
WHERE analysis.debtor.gender = (CASE ? WHEN 'Men' THEN 'MALE' WHEN 'Women' THEN 'FEMALE' END)
我不喜欢把CASE
放在WHERE
子句中。 这可能很难维护。 另一种方法是使用params
子查询:
FROM (SELECT ? as val) params CROSS JOIN . . . WHERE (analysis.debtor.gender = 'MALE' and val = 'Men') OR (analysis.debtor.gender = 'FEMALE' and val = 'Women')
你的sintax几乎是正确的,你也可以这样写
WHERE analysis.debtor.gender = case when ?='Men' then 'MALE' when ?='Female' then 'FEMALE' when ?='Cross' then 'XGENDER' else 'UNKNOWN' end