gpt4 book ai didi

sql - 如何在 Group By 中使用 Case Statement 列

转载 作者:行者123 更新时间:2023-12-04 01:32:05 24 4
gpt4 key购买 nike

正如问题所述,我试图制定一个在列结果中包含 case 语句的查询,然后我想将该列包含在查询的 group by 语句中。举一个具体的例子,这里是我的查询的全部内容:

SELECT SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2,
CASE
WHEN SOME_TABLE_ALIAS.COLUMN3 IS NOT NULL THEN 'A'
ELSE 'B'
END AS CASE_COLUMN
FROM SOME_TABLE SOME_TABLE_ALIAS
... (other table joins and where clauses)
GROUP BY SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2, CASE_COLUMN

来这里之前,我查了几个网站,包括 this one ,尝试解决我的问题。我试过在 CASE 之后添加另一个别名关键字 like 显示在链接的网页中,但没有运气。我继续收到的错误消息如下:
[Error] Script lines: 127-151 ----------------------
CASE_COLUMN IS NOT VALID IN THE CONTEXT WHERE IT IS USED. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.53.71

有没有其他人遇到过我面临的问题并且能够使用 GROUP BY关于结果 CASE陈述?任何帮助,将不胜感激。哦,DB2 版本是一个 z/OS 实例,版本 10 (DSN10015)

最佳答案

别名在 GROUP BY 中不可用,因为当 GROUP BY 发生时,别名尚未定义:

Here's the order:
1.FROM
2.WHERE
3.GROUP BY
4.HAVING
5.SELECT
6.ORDER BY

你可以解决这个问题:
SELECT column1,column2,case_column
FROM (
SELECT SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2,
CASE
WHEN SOME_TABLE_ALIAS.COLUMN3 IS NOT NULL THEN 'A'
ELSE 'B'
END AS CASE_COLUMN
FROM SOME_TABLE SOME_TABLE_ALIAS
... (other table joins and where clauses)
) a
GROUP BY COLUMN1, COLUMN2, CASE_COLUMN

或者只是使用您在 SELECT 中使用的案例在 GROUP BY

关于sql - 如何在 Group By 中使用 Case Statement 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20245218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com