这应该很容易,但我得到一个“无效列名称”错误。SQL查询使用列ALIAS
SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
WHERE ItemCount > 5
GROUP BY Transaction
ORDER BY ItemCount DESC
这种说法作品,未经这似乎是双重标准,对我来说,因为ORDER BY使用列别名WHERE子句。
这应该很容易,但我得到一个“无效列名称”错误。SQL查询使用列ALIAS
SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
WHERE ItemCount > 5
GROUP BY Transaction
ORDER BY ItemCount DESC
这种说法作品,未经这似乎是双重标准,对我来说,因为ORDER BY使用列别名WHERE子句。
使用HAVING
,并指定统计再次
SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
GROUP BY Transaction
HAVING COUNT(ItemId) > 5
ORDER BY ItemCount DESC
原因ORDER BY
正在与别名是因为SQL查询顺序
处理FROM(包括联接)
ON
OUTER
其中
GROUP BY
HAVING
SELECT
ORDER BY
TOP
SELECT [Transaction], COUNT(ItemId) AS ItemCount
FROM TransactionTable
WHERE ItemCount > 5
GROUP BY COUNT(ItemId)
ORDER BY COUNT(ItemId) DESC
您可以参考列别名在ORDER BY
如(逻辑)这是SELECT
后处理。要使用WHERE
或HAVING
子句中的列别名,您可以在表格表达式中定义SELECT
,例如,如下。
;WITH cte
AS (SELECT Transaction ,
COUNT(itemid) AS itemcount
FROM transactiontable
GROUP BY Transaction)
SELECT Transaction ,
itemcount
FROM transactiontable
WHERE itemcount > 5
ORDER BY itemcount DESC
WITH tempTable AS
(
SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
)
SELECT *
FROM tempTable
WHERE ItemCount > 5
GROUP BY Transaction
ORDER BY ItemCount DESC
感谢,正是我需要的 – Spidy 2011-03-18 20:00:05