[英]Python, insert a case statement into a sql query
I am having a problem on using the CASE statement multiple times in a sql query in PYTHON. 我在PYTHON的sql查询中多次使用CASE语句时遇到问题。 I wonder if I can take away the CASE statement and create a template, and then I can put the template parameter back into the original query. 我想知道是否可以删除CASE语句并创建模板,然后将模板参数放回原始查询中。 Like this: 像这样:
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
""")
put this into 放进去
crs.execute("""
SELECT
...
case_stm_template,
SUM(...)
FROM ....
WHERE ....
GROUP BY
case_stm_template
""".format(...))
This does not work. 这是行不通的。 Can anyone help me? 谁能帮我? THX!!! 谢谢!!!
What about : 关于什么 :
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
"""
then 然后
crs.execute("""
SELECT
...
%s,
SUM(...)
FROM ....
WHERE ....
GROUP BY
%s
""" % (case_stm_template, case_stm_template))
Or something along those lines. 或类似的规定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.