是否可以在sql查询条件表达式的in()构造中使用case.. when ...the子句。

我的情况是查询很长:

select  r.insurance_package_id,r.name,
       max(case r.insurance_package_id when 6 then r.name
                                       when 7 then r.name
                                       when 8 then r.name
                                       when 9 then r.name
                                       when 10 then r.name
                                       when 11 then r.name
                                       when 12 then r.name
                                       when 14 then r.name
                                       when 42 then r.name
                                       when 44 then r.name
                                       when 7 then r.name

                 end) CPI_Life


应该在条件表达式中使用大约200个id:因此,查询将非常残酷。

最佳答案

可能。请参考以下代码段

SELECT r.insurance_package_id
    ,r.NAME
    ,max(CASE
            WHEN r.insurance_package_id IN (
                    6
                    ,7
                    ,8
                    ,9
                    ,10
                    ,11
                    ,12
                    ,14
                    ,42
                    ,44
                    ,7
                    )
                THEN r.NAME
            END) CPI_Life

10-07 19:07
查看更多