如何在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