Предупреждение: нулевое значение исключается агрегатной или другой операцией набора в Aqua Data Studio
у меня есть проблема, когда данные равны нулю и предупреждение появляется, когда результат отображается. Как решить эту проблему?. Как изменить нулевые данные на 0, когда в таблице нет данных?.
Это мой код:-
SELECT DISTINCT c.username AS assigner_officer,
d.description AS ticketcategory,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NOT NULL
GROUP BY assigned_to)closedcases,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NULL
GROUP BY assigned_to)opencases
FROM ticket a
JOIN ticketlog b
ON a.ticketid = b.ticketid
JOIN access c
ON a.assigned_to = c.user_id
JOIN ticket_category d
ON a.cat_code = d.id
JOIN lookup_department e
ON a.department_code = e.code
результат выглядит так: -
Warnings: --->
W (1): Warning: Null value is eliminated by an aggregate or other SET operation.
<---
assigner_officer ticketcategory closedcases opencases
------------------- ----------------- -------------- ------------
abdulhafiz Enquiry (null) 0
affan Enquiry 12 (null)
amirul Enquiry 1 (null)
azrul_fahmi Enquiry 45 0
Azwani Enquiry (null) 0
chai Enquiry 4 (null)
dalinawati Enquiry 1 0
Emmy Complaints (null) 0
Fadhlia Enquiry 38 0
fairulhalif Others 1 (null)
farikh Enquiry (null) 0
ismailh Enquiry 28 0
izzahanna Enquiry (null) 0
Kamsuzilawati Enquiry 1 (null)
5 ответов:
вы бы в основном использовать
COUNT
для подведения итогов по UID. Поэтому
COUNT([uid])
выдаст предупреждение:предупреждение: нулевое значение исключается агрегатом или другой операцией набора.
при использовании с левым соединением, где подсчитанный объект не существует.
используя
COUNT(*)
в этом случае также будут отображаться неверные результаты, так как вы будете подсчитывать общее количество результатов (т. е. родителей), которые существовать.используя
COUNT([uid])
является допустимым способом подсчета, и предупреждение не более чем предупреждение. Однако если вы обеспокоены, и вы хотите получить истинное количество жидкости в этом случае можно использовать:SUM(CASE WHEN [uid] IS NULL THEN 0 ELSE 1 END) AS [new_count]
Это не добавит много накладных расходов на ваш запрос. (проверено mssql 2008)
использовать
ISNULL(field, 0)
Он также может быть использован с заполнителями:ISNULL(count(field), 0)
тем не менее, вы можете рассмотреть возможность изменения
count(field) to count(*)
Edit:
попробуй:
closedcases = ISNULL( (select count(closed) from ticket where assigned_to = c.user_id and closed is not null group by assigned_to), 0), opencases = ISNULL( (select count(closed) from ticket where assigned_to = c.user_id and closed is null group by assigned_to), 0),