Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nz et compte de avec condition where

11 réponses
Avatar
yannickh
Bonjour,
J'ai une table 'declarations' avec un champ [code secteur] et un champ [rg ia]. Je dois regrouper les [rg ia]>1 et calculer les occurences par secteur. Il faut que si le résultat est NULL, la valeur retournée soit 0 (ma requête est reprise dans une autre et si j'ai un champ NULL, la ligne complète de donnée de mon autre requête est considérée comme NULL et est donc ignorée...)
J'ai essayé d'utilisé la fonction Nz mais ma syntaxe doit être mauvaise.

SELECT DECLARATIONS.[Code Secteur],nz(Count(DECLARATIONS.[Rg ia]),0) AS Retours
FROM DECLARATIONS
WHERE (((DECLARATIONS.[Rg ia])>1))
GROUP BY DECLARATIONS.[Code Secteur];

Cette requête ne me retourne pas de message d'erreur mais ne me renvoie pas non plus les enregistrements NULL en 0. Ils restent NULL.

Comment faire s'il vous plaît ?

merci par avance.

PS : j'ai essayé en remplaçant la fonction nz par la fonction Iif mais la résultante est la même. Il n'y a pas d'erreur mais ça ne me retourne pas le résultat attendu (les NULL restent NULL et ne sont pas convertis en 0).

1 réponse

1 2
Avatar
Michel__D
Bonjour

yannickh a écrit :
Eric a écrit le 03/02/2009 à 23h29 :
Bonsoir,

Essaies ceci :

SELECT DISTINCT T.[Code Secteur], clng(nz(Retour,0)) AS Retours
FROM DECLARATIONS AS T LEFT JOIN (SELECT [Code Secteur], Count([Rg ia])
AS Retour FROM DECLARATIONS WHERE [Rg ia]>1 GROUP BY [Code Secteur]) AS
T1 ON T.[Code Secteur]=T1.[Code Secteur];


Bonsoir,

Apparemment votre proposition semble fonctionner et me renvoie les résultats
attendus. Je vais faire quelques tests plus poussés pour contrôler que je n'ai
pas de surprises. :)

Merci :)



Je pense que la proposition d'Eric est meilleure, sinon il y avait aussi ceci :

SELECT T.[Code Secteur], Count(Iif(T.[Rg ia]>1,T.[Rg ia],NULL)) AS Retours
FROM DECLARATIONS AS T
GROUP BY T.[Code Secteur];
1 2