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 :

Rapport SQL Total des soumissions et des commandes pour un client donné


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Rapport SQL Total des soumissions et des commandes pour un client donné
    Bonjour,

    Je dois produire un rapport dans lequel je veux faire la liste de nos clients et présenté pour une période donnée, le total des soumissions que nous leur avons faites, mais aussi le total des commandes qu'ils ont réellement passées.

    No. Client Nom du client Total soumission Total Facture
    c001 xxx 256 000$ 53 000$
    C002 yyy 25 000$ 3 000$
    c003 zzz 65 000$ 65 000$

    J'ai les tables suivantes :
    Clients - OCRD (T0)
    Soumissions - OQUT (T1)
    Factures - OINV (T2)

    DocTotal est le total de la soumission ou de la facture selon la table.
    Cardcode est le numéro du client
    Cardname est son nom

    Dans un premier temps, j'ai essayé de lister toutes les soumissions et factures sans faire de somme, question de valider le principe. J'obtiens beaucoup de doublons dans les 2 colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T0.[CardCode], T0.[CardName], T1.[DocTotal] AS Total_soum,  T2.[DocTotal] AS Total_facture 
    FROM OCRD T0  
    INNER JOIN OQUT T1 ON T0.[CardCode] = T1.[CardCode] 
    INNER JOIN OINV T2 ON T0.[CardCode] = T2.[CardCode] 
    WHERE T1.[DocDate] >=[%0] OR  T2.[DocDate]  >=[%0]
    Je comprends que la requête essaie de retourner une valeur dans chaque colonne à chaque ligne, mais je ne sais pas comment faire en sorte qu'il y ait une valeur seulement dans une des 2 colonnes à chaque ligne. Il me serait ensuite facile de faire la somme pour présenter mon tableau final.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je comprends que la requête essaie de retourner une valeur dans chaque colonne à chaque ligne, mais je ne sais pas comment faire en sorte qu'il y ait une valeur seulement dans une des 2 colonnes à chaque ligne. Il me serait ensuite facile de faire la somme pour présenter mon tableau final.
    Ce n'est pas la bonne approche, le plus simple c'est de faire 1 requete avec la somme par client des soumission et une requete avec la somme par client des factures. Ensuite tu fais une requête sur les clients avec une jointure externe sur chacune des requetes précédente.
    Ce qui donne quelque chose comme
    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
    SELECT C.[CardCode], C.[CardName], S.Total_soum,F.Total_facture  
    FROM OCRD C
    left outer join 
    (	select T1.[CardCode],SUM(T1.[DocTotal]) AS Total_soum
    	from OQUT T1
    	WHERE T1.[DocDate] >=[%0]
    	group by T1.[CardCode]
    ) S
    on C.[CardCode]=S.[CardCode]
    left outer join
    (
    	select T2.[CardCode] ,SUM(T2.[DocTotal]) AS Total_facture
    	from  OINV T2
    	where T2.[DocDate]  >=[%0]
    	group by T2.[CardCode]
    ) F
    on C.[CardCode]=F.[CardCode]
    Cordialement
    Soazig

  3. #3
    Candidat au Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci.

    Je vais tester le tout et vous revenir.

  4. #4
    Candidat au Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Désolée du délai.

    Je n'y suis pas arrivée. Comme je manque de temps. J'ai transmis le dossier à l'externe.

    Merci de votre aide.

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

Discussions similaires

  1. [TSE] Executer des commandes sur OS client
    Par Piou2fois dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 14/03/2016, 18h21
  2. Réponses: 2
    Dernier message: 15/06/2011, 13h56
  3. dynamic sql : exécuter des commandes sql d'une table
    Par bibi92 dans le forum Développement
    Réponses: 5
    Dernier message: 22/03/2010, 11h01
  4. Calcul du total des commandes effecutées par client
    Par romain404 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/09/2009, 14h54
  5. [MySQL] Récupération de l'ensemble des commandes de mon client
    Par moiameme dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/06/2008, 15h12

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