Faire une somme conditionnelle dans Access (SQL)

cs_Pixel Messages postés 17 Date d'inscription samedi 23 février 2002 Statut Membre Dernière intervention 24 juin 2011 - 8 mai 2011 à 18:39
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 11 mai 2011 à 18:01
Bonjour à tous

JE souhaite faire une requete me donnant le nbre d'articles commandés (sur l'ensemble des lignes de commandes), et ausi le nbre d'articles en retard (toujours sur l'ensemble des lignes de commande).
J'ai essayé çà mais çà ne marche pas :

reqSQL = "SELECT (code_Article), (libellé_Article), " & _
" SUM(Reste_à_Livrer) AS Nb_Articles, " & _
" SUM(CASE WHEN (date_Livr) <= '" & Date & "' THEN (Reste_à_Livrer) ELSE " & 0 & " END) AS Nb_Articles_retard " & _
"FROM [Lignes_Commandes] " & _
"GROUP BY (code_Article), (libellé_Article) " & _
"ORDER BY (code_Article)"

en fait sans la ligne avec le SUM CASE WHEN çà marche bien, et je n'ai que le nbre d'articles total...
en fait j'ai du mal avec le case WHEN...

Merci de m'aider un peu à résoudre çà

2 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
9 mai 2011 à 15:15
Bonjour,

Que veux-tu dire par "Ca ne marche pas" ?

Mes essais sous Access sont loin, je ne voudrais donc pas dire de bêtises mais il semble me rappeler que la clause WHEN n'est pas acceptée sous SQL Access. A vérifier.

Que te mets-il comme erreur.
Enlève la clause WHEN et fais tourner ta requête, si ça marche, remets-là et sois sur que tu n'as pas d'erreur de syntaxe.

Voici la syntaxe de WHEN:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

avec plusieurs clauses WHEN possibles bien sur.


Calade
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
11 mai 2011 à 18:01
Salut,
Dans Access If....Else...se traduit par VraiFaux(Condition;Vrai;Faux)
et donc :

...SUM(IIf(date_Livr<=Date ;1;0)) AS Nb_Articles_retard ...


[] Ce qui va sans dire. va mieux en le disant.
0
Rejoignez-nous