且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 Group By 中使用 Case 语句列

更新时间:2023-01-19 17:12:06

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

The alias isn't available to use in the GROUP BY because when GROUP BY happens the alias isn't defined yet:

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

您可以通过以下方式解决这个问题:

You can work around that with:

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 in GROUP BY 中使用的大小写

Or just use the case you use in SELECT in GROUP BY