Oracle Sql 创建新列时合并所有错误

Oracle Sql Union all error when creating new column

大家早上好。我无法使用 union all 语句将 3 个输出组合在一起。我的查询如下,我收到一条错误消息,指出 ATTR 无效。

想法?

Error report -
SQL Error: ORA-00904: "ATTR": invalid identifier
00904. 00000 -  "%s: invalid identifier"



SELECT
                "TOC_GENDER" as Attr_Type
                ,TOC_GENDER as Attr
                ,COUNT (DISTINCT CON_INDIVIDUAL_ID) AS UNIQ_INDIV_ID_CNT
                ,COUNT (DISTINCT TOC_DEALER_NO) AS UNIQ_DLR_CNT
FROM   zeta.Customer_table
GROUP BY Attr_Type, attr
union all
SELECT
                "TOC_HD_TARGET_SEGMENT" as Attr_Type
                ,TOC_HD_TARGET_SEGMENT as attr
                ,COUNT (DISTINCT CON_INDIVIDUAL_ID) AS UNIQ_INDIV_ID_CNT
                ,COUNT (DISTINCT TOC_DEALER_NO) AS UNIQ_DLR_CNT
FROM   zeta.Customer_table
GROUP BY Attr_Type, attr
union all
SELECT
                "TOL_POLK_COMPETITIVE_BRAND" as Attr_Type
                ,TOL_POLK_COMPETITIVE_BRAND as attr
                ,COUNT (DISTINCT CON_INDIVIDUAL_ID)      AS UNIQ_INDIV_ID_CNT
                ,COUNT (DISTINCT TOC_DEALER_NO)    AS UNIQ_DLR_CNT
FROM   zeta.Customer_table
GROUP BY Attr_Type, attr
ORDER BY Attr_Type, attr;

不要按列的别名分组:

SELECT
                "TOC_GENDER" as Attr_Type
                ,TOC_GENDER as Attr
                ,COUNT (DISTINCT CON_INDIVIDUAL_ID) AS UNIQ_INDIV_ID_CNT
                ,COUNT (DISTINCT TOC_DEALER_NO) AS UNIQ_DLR_CNT
FROM   zeta.Customer_table
GROUP BY Attr_Type, attr

应该是

SELECT
                "TOC_GENDER" as Attr_Type
                ,TOC_GENDER as Attr
                ,COUNT (DISTINCT CON_INDIVIDUAL_ID) AS UNIQ_INDIV_ID_CNT
                ,COUNT (DISTINCT TOC_DEALER_NO) AS UNIQ_DLR_CNT
FROM   zeta.Customer_table
GROUP BY TOC_GENDER

您不能在 group by 中使用别名。将它们更改为 group by TOC_GENDER,等等

此外,ORDER BYUNION 一起使用可能很棘手(而且也不能使用别名)。使用当前 ORDER BY 子句将整个查询包装在外部 select 中,或者将其更改为 ORDER BY 1,2.


要添加具有静态值的列,您需要使用单引号,而不是双引号。单引号用于分隔字符串,而双引号用于分隔标识符(例如 table 名称或列名称)。

由于带有静态字符串的列在整个结果集中只有一个值,因此不需要包含在 GROUP BY 子句中。