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