Запрос подсчета SQL - PullRequest
       8

Запрос подсчета SQL

2 голосов
/ 02 октября 2008

Привет, почему это не работает в SQL Server 2005?

select HALID, count(HALID) as CH from Outages.FaultsInOutages

where CH > 3

group by HALID

Я получаю неверное имя столбца 'CH'


Я думаю, что это был правильный путь, но все равно получаю ошибку: Неверное имя столбца 'CH'.

При работе:

выберите HALID, количество (HALID) как CH из Outages.FaultsInOutages группа по HALID, имеющая CH> 3

Ответы [ 2 ]

14 голосов
/ 02 октября 2008

Нельзя использовать псевдоним в предложении where или в предложении where, так как он не обрабатывается, пока ПОСЛЕ генерации набора результатов, правильный синтаксис:

SELECT HALID, COUNT(HALID) AS CH
FROM Outages.FaultsInOutages
GROUP BY HALID
HAVING COUNT(HALID) > 3

Это сгруппирует элементы по HALID, а затем вернет ТОЛЬКО результаты, которые содержат более 3 записей для конкретного HALID

4 голосов
/ 02 октября 2008

Попробуйте

select HALID, count(HALID) from Outages.FaultsInOutages 
group by HALID having count(HALID) > 3

Ваш запрос содержит две ошибки:

  • Использование где агрегат при группировании, решается с помощью
  • Использование псевдонима для агрегата в условии, не поддерживается, решается повторным использованием агрегата
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...