SQL SERVER - Groupement sur case when

Fermé
Nono21011978 Messages postés 2 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 13 mai 2009 - 13 mai 2009 à 12:10
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 13 mai 2009 à 15:04
Bonjour,

Sur une requete dans SQL SERVER, j'ai besoin d'attaquer deux tables différentes ( clients et factures ) et en retour il me faut qu'une ligne par client.

Dans la table clients, je recupere les champs Code, Nom, ....

Dans la table factures je recupere des champs simple du type Montant et des champs calculé via un CASE WHEN


clients.numcomptable Code_Client
factures.mtsolde Mt_Du_Facture ,

CASE WHEN factures.blitigenonbloquant+factures.blitigebloquant <> '0'
then 1
else 0
End Nb_Fact_Litige ,


Les deux tables sont à la base triée par code client croissant et par numéro de factures croissantes.

J'ai besoin d'obtenir en resultat :

Mon résultat doit donc me donner mon code client, le montant total des factures dues, et le nombre de factures en litige.

Je ne sais pas comment faire, merci de m'aider
A voir également:

1 réponse

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 385
13 mai 2009 à 14:31
Bonjour,

L'ordre suivant devrait faire ce que tu veux
SELECT code_client , sum(Mt_Du_Facture) asTotalFactureDu ,
sum(case when factures.blitigenonbloquant+factures.blitigebloquant <> '0'
then 1
else 0
End) as NombreFactLitiges
group by code_client

en ajoutant la jointure entre les deux tables
A plus
1
Nono21011978 Messages postés 2 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 14:39
Tout d'abord merci, je vais le tester pour voir.

Il me manque juste un petit détail : je rajoute ma jointure et le nom des tables avec FROM et WHERE afin d'avoir une requete du type


SELECT xxxxxxxx
xxxxxxxx

FROM xxxxxxx

WHERE xxxx=xxxx

Le Group By, je dois le mettre après chaque champ que je souhaite groupé ou directement à la fin de la requete apres le Where ??

Merci
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 385 > Nono21011978 Messages postés 2 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 15:04
Bonjour,

Ta requête doit être a peu près la suivante:
SELECT a , b , c , ....
FROM table1
WHERE condition1
GROUP BY a , b , ...

Le GROUP by vient à la fin de la commande.

A plus
0