IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Group By incomplet


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut Group By incomplet
    Bonjour,

    la syntaxe ci-après me donne m'affiche 2 lignes, or je souhaite obtenir 1 seule ligne, comment procéder ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CONSEIL              	NULL	10	NULL	0	87	97
    CONSEIL             	10	10	2007	15	0	0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT     TOP (100) PERCENT c.CLI_CODCLI AS CodeClient, c.REP_CODE AS Cial, DATEPART(MM, l.DLVINVOICEDAT) AS MoisFre, DATEPART(MM, GETDATE()) 
                          AS DateEnc, DATEPART(YY, l.DLVINVOICEDAT) AS AnneeFre, SUM(CASE WHEN COALESCE (l.alvinvoicetyp, '') 
                          = 'FA' THEN l.nlvtotnet WHEN COALESCE (l.alvinvoicetyp, '') = 'AV' THEN - l.nlvtotnet ELSE 0 END) AS MontantFactures, 
                          SUM(CASE WHEN COALESCE (l.alvblivtyp, '') = 'LC' AND l.alvinvoicetyp IS NULL THEN l.nlvtotnet WHEN COALESCE (l.alvblivtyp, '') = 'RC' AND 
                          l.alvinvoicetyp IS NULL THEN - l.nlvtotnet ELSE 0 END) AS MontantBL, SUM(CASE WHEN COALESCE (l.alvordertyp, '') = 'CC' AND l.alvblivtyp IS NULL 
                          AND l.alvinvoicetyp IS NULL THEN l.nlvtotnet ELSE 0 END) AS MontantCde
    FROM         dbo.CLIENT AS c WITH (nolock) LEFT OUTER JOIN
                          dbo.LIG_VTE AS l WITH (nolock) ON c.CLI_CODCLI = l.ALVCUSTNO AND l.ALVITEMTYP IN ('A', 'R', 'F', 'P')
    WHERE     (c.CLI_CODCLI = 'CONSEIL')
    GROUP BY c.CLI_CODCLI, c.REP_CODE, DATEPART(MM, l.DLVINVOICEDAT), DATEPART(YY, l.DLVINVOICEDAT)
    HAVING      (DATEPART(MM, l.DLVINVOICEDAT) = '10' OR
                          DATEPART(MM, l.DLVINVOICEDAT) IS NULL) AND (DATEPART(YY, l.DLVINVOICEDAT) = '2007' OR
                          DATEPART(MM, l.DLVINVOICEDAT) IS NULL)
    merci pour votre aide.

    Daniel

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par Daniel MOREAU Voir le message
    la syntaxe ci-après me donne m'affiche 2 lignes, or je souhaite obtenir 1 seule ligne
    Laquelle ?

    En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous

  3. #3
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    re,

    excuses pour l'oubli,

    Actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CONSEIL              	NULL	10	NULL	0	87	97
    CONSEIL             	10	10	2007	15	0	0
    Ce que je souhaite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CONSEIL             	10	10	2007	15	87	97
    Merci

    Daniel

  4. #4
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    bonjour,

    J'ai enfin la réponse à mon problème.

    Je vous livre la syntaxe pour info.

    La difficulté se située dans la jointure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT     c.CLI_CODCLI AS CodeClient, c.REP_CODE AS Cial, DATEPART(MM, GETDATE()) AS moisfac, DATEPART(yy, GETDATE()) AS anneefac, 
                          SUM(CASE WHEN COALESCE (l.alvinvoicetyp, '') = 'FA' THEN l.nlvtotnet WHEN COALESCE (l.alvinvoicetyp, '') = 'AV' THEN - l.nlvtotnet ELSE 0 END) 
                          AS MontantFactures, SUM(CASE WHEN COALESCE (l.alvblivtyp, '') = 'LC' AND l.alvinvoicetyp IS NULL THEN l.nlvtotnet WHEN COALESCE (l.alvblivtyp, 
                          '') = 'RC' AND l.alvinvoicetyp IS NULL THEN - l.nlvtotnet ELSE 0 END) AS MontantBL, SUM(CASE WHEN COALESCE (l.alvordertyp, '') = 'CC' AND 
                          l.alvblivtyp IS NULL AND l.alvinvoicetyp IS NULL THEN l.nlvtotnet ELSE 0 END) AS MontantCde, SUM(CASE WHEN COALESCE (l.alvinvoicetyp, '') 
                          = 'FA' THEN l.nlvtotnet WHEN COALESCE (l.alvinvoicetyp, '') = 'AV' THEN - l.nlvtotnet ELSE 0 END) + SUM(CASE WHEN COALESCE (l.alvblivtyp, '') 
                          = 'LC' AND l.alvinvoicetyp IS NULL THEN l.nlvtotnet WHEN COALESCE (l.alvblivtyp, '') = 'RC' AND l.alvinvoicetyp IS NULL 
                          THEN - l.nlvtotnet ELSE 0 END) + SUM(CASE WHEN COALESCE (l.alvordertyp, '') = 'CC' AND l.alvblivtyp IS NULL AND l.alvinvoicetyp IS NULL 
                          THEN l.nlvtotnet ELSE 0 END) AS TotGénéral
    FROM         dbo.CLIENT AS c WITH (nolock) LEFT OUTER JOIN
                          dbo.LIG_VTE AS l WITH (nolock) ON c.CLI_CODCLI = l.ALVCUSTNO AND l.ALVITEMTYP IN ('A', 'R', 'F', 'P') AND (l.ALVINVOICETYP IN ('FA', 'AV') AND 
                          DATEPART(MM, l.DLVINVOICEDAT) = DATEPART(MM, GETDATE()) AND DATEPART(yy, l.DLVINVOICEDAT) = DATEPART(yy, GETDATE()) OR
                          COALESCE (l.ALVINVOICETYP, '') = '')GROUP BY c.CLI_CODCLI, c.REP_CODE
    Merci

    Daniel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Group by incomplet
    Par informatiquecsnd dans le forum Requêtes
    Réponses: 12
    Dernier message: 09/03/2012, 16h03
  2. [CR8] Groupes nommés par ordre spécifié
    Par PschittN dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/05/2004, 23h46
  3. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21
  4. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo