SQL-запрос использовать WHERE на столбце ALIAS - PullRequest
2 голосов
/ 18 марта 2011

Это должно быть легко, но я получаю ошибку "Неверное имя столбца".

SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
WHERE ItemCount > 5
GROUP BY Transaction
ORDER BY ItemCount DESC

Этот оператор работает без предложения WHERE, которое кажется мне двойным стандартом, поскольку ORDER BY использует псевдоним столбца.

Ответы [ 4 ]

6 голосов
/ 18 марта 2011

используйте HAVING и укажите количество снова

SELECT Transaction, COUNT(ItemId) AS ItemCount
FROM TransactionTable
GROUP BY Transaction
HAVING COUNT(ItemId) > 5
ORDER BY ItemCount DESC

Причина, по которой ORDER BY работает с псевдонимом, заключается в том, что запрос SQL обрабатывается в этом порядке

ОТ (включая присоединения)
ON
OUTER
ГДЕ
GROUP BY
HAVING
SELECT
ЗАКАЗАТЬ НА
TOP

0 голосов
/ 08 августа 2011
WITH tempTable AS
(
  SELECT Transaction, COUNT(ItemId) AS ItemCount
  FROM TransactionTable
)
SELECT * 
FROM tempTable
WHERE ItemCount > 5
GROUP BY Transaction
ORDER BY ItemCount DESC
0 голосов
/ 18 марта 2011

Вы можете ссылаться на псевдоним столбца в 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  
0 голосов
/ 18 марта 2011
SELECT [Transaction], COUNT(ItemId) AS ItemCount
FROM TransactionTable
WHERE ItemCount > 5
GROUP BY COUNT(ItemId) 
ORDER BY COUNT(ItemId) DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...