Kon*_*rad 5 oracle alias group-by
我有一个查询,其中链接了两列。为什么别名不能在工作中的GROUP BY
条款,但ORDER BY
条款,它的工作?如何正确编写选择?
SELECT
KOS_VER_ID AS "Vertrag"
, WHR_ISO_3_CODE AS "Waehrung"
, KOS_KOA_ST_KZN || ' - ' || ST_LANGBEZ_EN as "Kostenart"
, SUM (KOS_BETRAG) AS "Summe pro KOA"
FROM
KOSTEN
, WAEHRUNG
, SCHLUESSELTABELLE
WHERE
KOSTEN.KOS_VERHI_WHR_ID = WAEHRUNG.WHR_ISO_ID
AND KOSTEN.KOS_KOA_ST_KZN = SCHLUESSELTABELLE.ST_ID
AND KOS_VER_ID in (2509, 2510, 2511)
GROUP BY
KOS_VER_ID
, WHR_ISO_3_CODE
, KOS_KOA_ST_KZN || ' - ' || ST_LANGBEZ_EN
ORDER BY
"Vertrag"
, "Kostenart"
;
Run Code Online (Sandbox Code Playgroud)
为什么别名在 GROUP BY 子句中不起作用?
因为这些只是语法规则。列别名可以在ORDER BY
子句中使用,但不能在GROUP BY
子句中使用。
如果您查看语法图,这将变得显而易见:
所以在ORDER BY
允许 an 表达式之后,一个位置 ( order by 1
) 或 ac_alias
代表“列别名”。
如您所见,c_alias
后面没有选项,因此您不能使用列别名。
不过,这对 Oracle 来说并没有什么特别之处。这就是它在 SQL 标准中的定义方式。