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 :

Perte de données dans requête SQL avec SUM CASE WHEN


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut Perte de données dans requête SQL avec SUM CASE WHEN
    Bonjour,

    Cela fait plusieurs semaines que je planche sur mon problème en vain.
    Je cherche à transposer des données qui sont actuellement en ligne en colonnes selon les pays.

    Ma requête est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.champs1, t2.champs2, SUM(CASE WHEN pays_id = 0 THEN quantite ELSE 0 END) as 'pays_0', SUM(CASE WHEN pays_id = 1 THEN quantite ELSE 0 END) as 'pays_1', etc ...
    FROM table1 t1, table2 t2
    WHERE t1.champs1 = t2.champs1
    GROUP BY t2.champs2
    Quand je fais cette requête pour un seul pays elle fonctionne bien mais j'ai environ 45 pays ... et quand je mets tous les pays, j'ai des pertes de données qui sont aléatoires si j'enlève un ou deux pays par exemple.

    Merci d'avance de votre aide !!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Déja je suis surpris que la requête fonctionne puisque tu as une colonne de plus dans la clause SELECT que dans la clause GROUP BY.
    Quand tu dis "perte" de données, tu veux parler de quantité en moins pour des pays? Il faudrait un exemple précis.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    MySQL est une grosse merde qui donne des résultats faux… Pour comprendre pourquoi, lisez cet article :
    https://sqlpro.developpez.com/tutori...mysql-mariadb/
    En particulier § VII

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour vos réponses !

    Oui c'est ça j'ai des quantités en moins pour les pays.

    Je vais regarder pour la clause group by c'est peut être ça !

    Merci beaucoup

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    C'est ça !

    la règle est :
    https://sqlpro.developpez.com/cours/sqlaz/ensembles/
    Mon cours....

    Que MySQL ne respecte pas et livre des résultats aléatoires....

    Tout autre SGBDR vous aurait générer une erreur de groupage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [AC-2003] Requête SQL avec SUM en fonction d'un attribut
    Par Linuss dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 30/05/2012, 09h10
  2. [AC-2003] Appeler une fontion dans requête SQL avec argument SQL
    Par RoZyk dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/11/2010, 16h09
  3. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  4. [MySQL] Introduire une variable dans requête SQL, insérer des données à la volée
    Par Ronan.f dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 29/04/2006, 22h10
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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