0

我在 PYTHON 的 sql 查询中多次使用 CASE 语句时遇到问题。不知道能不能把CASE语句去掉,创建一个模板,然后把模板参数放回原来的查询中。像这样:

case_stm_template = 
    crs.execute("""
         CASE
            WHEN level_1 = 'Corporate'
            THEN 
                CASE
                    WHEN ssr.rating = 'A' OR ssr.rating LIKE 'A[+-]'
                    THEN 'Corp A'

                    WHEN ssr.rating = 'AA' OR ssr.rating LIKE 'AA[+-]'
                    THEN 'Corp AA'

                    WHEN ssr.rating = 'BBB' OR ssr.rating LIKE 'BBB[+-]'
                    THEN 'Corp BBB'

                    ELSE NULL
                END

            WHEN level_1 = 'Government' AND level_2 = 'Provincial'
            THEN 'Prov'

            WHEN level_1 = 'Government' AND level_2 = 'Federal'
            THEN 'Canada'

            ELSE NULL
        END

        """)

把这个放进

crs.execute("""
    SELECT
        ...
        case_stm_template,
        SUM(...)
    FROM ....
    WHERE ....
    GROUP BY
        case_stm_template
""".format(...))

这不起作用。谁能帮我?谢谢!!!

4

1 回答 1

0

关于什么 :

case_stm_template="""
     CASE
        WHEN level_1 = 'Corporate'
        THEN 
            CASE
                WHEN ssr.rating = 'A' OR ssr.rating LIKE 'A[+-]'
                THEN 'Corp A'

                WHEN ssr.rating = 'AA' OR ssr.rating LIKE 'AA[+-]'
                THEN 'Corp AA'

                WHEN ssr.rating = 'BBB' OR ssr.rating LIKE 'BBB[+-]'
                THEN 'Corp BBB'

                ELSE NULL
            END

        WHEN level_1 = 'Government' AND level_2 = 'Provincial'
        THEN 'Prov'

        WHEN level_1 = 'Government' AND level_2 = 'Federal'
        THEN 'Canada'

        ELSE NULL
    END

    """

然后

crs.execute("""
SELECT
    ...
    %s,
    SUM(...)
FROM ....
WHERE ....
GROUP BY
    %s
""" % (case_stm_template, case_stm_template))

或类似的规定。

于 2013-05-17T13:34:13.243 回答