Нахождение количества экземпляров отклонений с использованием SQL Server

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я создаю синхронизацию с использованием SQL. Я пытаюсь запросить таблицу, которая содержит результаты сравнения данных о количестве продуктов в нескольких таблицах. Я пытаюсь отобразить данные для продуктов, у которых было смещение больше 0 в течение 7 дней или более. Это запрос, который я написал, чтобы попытаться получить этот результат

 
 select  Sap_code, Product_description, Location, Total_difference
 from  Misalignment
 where Total_difference > 0  and
 count(Total_difference) > 7
 group by Sap_code, Product_description, Location, Total_difference

  

При запуске этого запроса я получаю следующее сообщение об ошибке:

Агрегат может не отображаться в предложении WHERE, если он не находится в подзапросе, содержащемся в предложении HAVING или списке выбора, а агрегируемый столбец является внешней ссылкой. «

Я включил изображение таблицы, которую я запрашиваю, в качестве точки отсчета

введите описание изображения здесь

Комментарии:

1. Ошибка довольно ясна, что вы в ней не понимаете?

2. Ошибка также указывает вам, куда она должна идти: «содержится в предложении HAVING»

3. @HoneyBadger, все еще новичок в SQL, поэтому прошу прощения, если я не подключился ко всем сообщениям об ошибках…

4. @Larnu, я попытался включить предложение having, но оно все равно не сработало.

5. Тогда покажите эту попытку и в вашем вопросе, @Nitamashu. HAVING это именно то, что вам нужно.

Ответ №1:

Дает ли этот запрос то, что вы хотите?

 SELECT COUNT(Total_difference) AS DiffCount, Sap_code, Product_description
    , Location, Total_difference
FROM Misalignment      
WHERE Total_difference > 0 
GROUP BY Sap_code, Product_description, Location
HAVING COUNT(Total_difference) > 7
  

Комментарии:

1. Хорошо, вы можете проверить ответ, если он подходит для вас.