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

 Oracle Discussion :

SELECT SUM et HAVING


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Par défaut SELECT SUM et HAVING
    Bonjour,

    J'ai un problème sur une requête. Voici ma requête qui fonctionne bien mais qui ne filtre pas au niveau du having.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    SELECT 
    DISTINCT [Kanabeach$Sales Line].[PfsSalesperson Code],
    [Kanabeach$Customer].No_,
    [Kanabeach$Customer].Name,
    [Kanabeach$Customer].[TCO Customer],
    (
    SELECT 
        sum([Kanabeach$Sales Line].Amount) 
    FROM  
        [Kanabeach$Sales Line] , [Kanabeach$Sales header] 
    WHERE 
        [Kanabeach$Sales Line].[Document No_]=[Kanabeach$Sales header].No_ 
    AND [Kanabeach$Customer].No_ = [Kanabeach$Sales Header].[Sell-to Customer No_]
    AND [Kanabeach$Sales header].[Salesperson Code]=[Kanabeach$Sales Line].[PfsSalesperson Code] 
    AND [Kanabeach$Sales Header].[Order Date] > '20091115' 
    AND [Kanabeach$Sales Header].[PfsOrder Type] = 'PRECO'
    HAVING sum([Kanabeach$Sales Line].Amount)>0
    )
     
    FROM
       [Kanabeach$Sales Line] , [Kanabeach$Sales Header] , [Kanabeach$Customer]
    WHERE 
       [Kanabeach$Sales Line].[PfsSalesperson Code] = '001' 
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '002'
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '004' 
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '008' 
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '009' 
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '011' 
    OR [Kanabeach$Sales Line].[PfsSalesperson Code] = '012'
     
    GROUP BY
    [Kanabeach$Sales Line].[PfsSalesperson Code], [Kanabeach$Customer].No_,[Kanabeach$Customer].Name,[Kanabeach$Customer].[TCO Customer]
    ORDER BY
    [Kanabeach$Sales Line].[PfsSalesperson Code], [Kanabeach$Customer].No_,[Kanabeach$Customer].Name,[Kanabeach$Customer].[TCO Customer]
    La requete extrait en faite la liste des représentants avec les clients et affiche le totale de ses lignes de ventes. Et je n'aimerais extraire que les clients ayant un montant. La ligne HAVING sum([Kanabeach$Sales Line].Amount)>0 ne fonctionne pas en fait.

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ce serait pas du SQL Server ça ?

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et c'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    SELECT 
    [Kanabeach$Sales Line].[PfsSalesperson Code],
    [Kanabeach$Customer].No_,
    [Kanabeach$Customer].Name,
    [Kanabeach$Customer].[TCO Customer],
     sum([Kanabeach$Sales Line].Amount) 
    FROM
       [Kanabeach$Sales Line] , [Kanabeach$Sales Header] , [Kanabeach$Customer]
    WHERE 
        [Kanabeach$Sales Line].[Document No_]=[Kanabeach$Sales header].No_ 
    AND [Kanabeach$Customer].No_ = [Kanabeach$Sales Header].[Sell-TO Customer No_]
    AND [Kanabeach$Sales header].[Salesperson Code]=[Kanabeach$Sales Line].[PfsSalesperson Code] 
    AND [Kanabeach$Sales Header].[ORDER Date] > '20091115' 
    AND [Kanabeach$Sales Header].[PfsOrder Type] = 'PRECO'
    AND [Kanabeach$Sales Line].[PfsSalesperson Code] IN ('001' , '002','004' ,'008' ,'009' ,'011' ,'012')
    HAVING sum([Kanabeach$Sales Line].Amount)>0
    GROUP BY
    [Kanabeach$Sales Line].[PfsSalesperson Code], [Kanabeach$Customer].No_,[Kanabeach$Customer].Name,[Kanabeach$Customer].[TCO Customer]
    ORDER BY
    [Kanabeach$Sales Line].[PfsSalesperson Code], [Kanabeach$Customer].No_,[Kanabeach$Customer].Name,[Kanabeach$Customer].[TCO Customer]
    Remarques :
    - IN c'est bien plus simple que les OR à répétition
    - DISTINCT est inutile si le GROUP BY est OK

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 10
    Par défaut
    Merci pour les conseils.
    Oui c'est du SQL server !
    Une idée?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Postez ici la prochaine fois !
    http://www.developpez.net/forums/f49...ms-sql-server/

    La requête d'orafrance ne fonctionne pas (il a juste interverti les clauses HAVING et GROUP BY) ?

    Savez-vous que vous pouvez aliaser vos tables pour éviter l'aspect massif de votre requête ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Voici un peu de nettoyage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SELECT 
        L.[PfsSalesperson Code],
        C.No_,
        C.Name,
        C.[TCO Customer],
        sum(L.Amount) as amount
    FROM
       [Kanabeach$Sales Line] AS L
       INNER JOIN [Kanabeach$Sales Header] AS H
         ON H.No_ = L.[Document No_]
        AND H.[Salesperson Code] = L.[PfsSalesperson Code]
       INNER JOIN [Kanabeach$Customer] AS C
         ON C.No_ = H.[Sell-TO Customer No_]
    WHERE 
        H.[ORDER Date] > convert(datetime, '20091115', 112)
    AND H.[PfsOrder Type] = 'PRECO'
    AND L.[PfsSalesperson Code] IN ('001', '002', '004', '008', '009', '011', '012')
    GROUP BY
        L.[PfsSalesperson Code],
        C.No_,
        C.Name,
        C.[TCO Customer]
    HAVING
        sum(L.Amount) > 0
    ORDER BY
        L.[PfsSalesperson Code] ASC,
        C.No_ ASC,
        C.Name ASC,
        C.[TCO Customer] ASC;

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

Discussions similaires

  1. [MySQL] SELECT SUM sur 96 champs
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/02/2008, 21h50
  2. SELECT SUM multi-colone
    Par Momodedf dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/10/2007, 11h24
  3. Select if ( select sum ()) arrondis?
    Par cain.patres dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/06/2007, 16h01
  4. probleme requete SELECT SUM
    Par Sophie2097 dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/11/2006, 15h14
  5. Utiliser le résultat de SELECT Sum dans If
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 33
    Dernier message: 15/11/2005, 08h38

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