起别名之后使用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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章