Avertissement: la valeur Null est éliminé par une agrégation ou une autre opération DÉFINIE dans l'Aqua Data Studio
J'ai un problème lorsque les données sont nulles et l'avertissement apparaît lorsque le résultat est l'affichage.
Comment résoudre ce problème?. Comment faire pour modifier les données nulle à 0 lorsque le pas de données dans la table?.
C'est mon code:-
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
Le résultat apparaître comme ceci:-
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)
Count(closed) ... WHERE ... closed IS NULL
n'est pas aucun sentiment commeCOUNT
ne compte queNOT NULL
valeurs- Double Possible de Obtenir avertissement: la valeur Null est éliminé par une agrégation ou une autre opération de l'ENSEMBLE
- Je reçois le message d'avertissement. Je n'ai pas l'esprit de l'avertissement et de lui-même, mais, j'ai besoin de la procédure stockée à exécuter par l'Agent SQL, et quand je fais ça, l'avertissement cause le travail de l'Agent à l'échec.
- Cette question n'a pas de sens.
Vous devez vous connecter pour publier un commentaire.
Vous serait principalement à l'aide de
COUNT
pour résumer plus d'un UIDE. DoncCOUNT([uid])
va produire de l'avertissement:tout en étant utilisé avec un left join, où l'compté objet n'existe pas.
À l'aide de
COUNT(*)
dans ce cas serait également rendu des résultats incorrects, comme vous serait alors de compter le nombre total de résultats (c'est à dire les parents) qui existent.À l'aide de
COUNT([uid])
EST un moyen valable de comptage, l'avertissement n'est rien de plus qu'un avertissement. Toutefois, si vous êtes concerné et que vous souhaitez obtenir un vrai comte de uides dans ce cas, alors vous pourriez utiliser:Ce ne serait pas ajouter beaucoup de frais généraux à votre requête.
(testé mssql 2008)
count([uid])
, serait-il travailler pour l'utilisationcount(1)
?Une façon de résoudre ce problème est d'activer les avertissements.
SELECT SUM(X) FROM (VALUES ( 1 + NULL)) V(X);SELECT 'This is executed fine';
Utilisation
ISNULL(field, 0)
Il peut également être utilisé avec des agrégats:Cependant, vous pouvez envisager de modifier
count(field) to count(*)
Edit:
essayer:
ISNULL(count(field), 0)
ne fonctionne pas pour moi en MSSQL 2008 R2. La question était parce que j'étais en train de compter un champ dans une externe gauche rejoint la table pour obtenir le nombre d'enregistrements dans la table jointe liées à la table principale. J'ai fini par faire une sous-requête interne rejoint les deux tables pour obtenir le comte par ID dans la table principale. La sous-requête a été laissé externe joint à la table principale, sur l'ID. La sous-requête du comte fut ensuite enveloppé dans une ISNULL pour obtenir le 0 je le voulais (sans le message d'avertissement).Vous voulez mettre la
ISNULL
à l'intérieur de laCOUNT
fonction, non pas à l'extérieur:Pas BON:
ISNULL(COUNT(field), 0)
BON:
COUNT(ISNULL(field, 0))
count(ISNULL(field, 0))
sera équivalent àcount(*)
, que la valeur est d'être compté ne peut plus jamais êtreNULL
.COUNT(ISNULL(field, 0))
est différente deCOUNT(*)
, veuillez le faire, SQL Violon il est facile de partager un tel contre-exemple. Mais vous ne serez pas en mesure de. DepuisCOUNT
compte le nombre de valeurs non nulles, même si elles sont nulles, etISNULL(field, 0)
est toujours une valeur non nulle,COUNT(ISNULL(field, 0))
compte des lignes. C'est ce queCOUNT(*)
est et non ce que l'OP était ici après.group by
requête dans un contexte différent de ce que l'OP a été après. Dans mon cas,ISNULL(COUNT(field), 0)
serait de retourner un nombre de 0 pour toutes les valeurs NULL qui était erronée, car il y avait plusieurs valeurs null alors queCOUNT(ISNULL(field),0)
serait de retour le nombre correct pour le nombre total de valeurs NULL. Mais encore une fois, deux totalement différents scénarios.J'ai été faire cette erreur; je viens de mettre un
WHERE
clause pour le champ qui a été utilisé danscount
clause. il a résolu le problème. Remarque: si la valeur null existe pas, vérifier si ses critiques pour le rapport, comme ses exclus du décompte.Vieux requête:
Nouvelle requête:
Si aucune valeur Null, il existe à l'intérieur de fonction d'agrégation de vous devra faire face à ce problème.
Au lieu de code ci-dessous
utiliser comme