起別名之後使用group by 表達式

SQL-如何在Groupby中使用別名?
SQL語法。所以如果我有

SELECT 
 itemName as ItemName,
 substring(itemName, 1,1) as FirstLetter,
 Count(itemName)
FROM table1
GROUP BY itemName, FirstLetter

這將是不正確的,因爲

GROUP BY itemName, FirstLetter 

真的應該

GROUP BY itemName, substring(itemName, 1,1)

對於大多數關係數據庫系統,此順序解釋哪些名稱(列或別名)是有效的,因爲它們必須是在前一步中引入的。

因此,在Oracle和SQLServer中,不能使用在SELECT子句中定義的GROUP BY子句中的術語,因爲GROUP BY是在SELECT子句之前執行的。

可以始終使用子查詢,以便可以使用別名;

SELECT ItemName, FirstLetter, COUNT(ItemName)
FROM (
    SELECT ItemName, SUBSTRING(ItemName, 1, 1) AS FirstLetter
    FROM table1
    ) ItemNames
GROUP BY ItemName, FirstLetter
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章