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 :

Transposer lignes en colonnes


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Transposer lignes en colonnes
    Bonjour,

    je souhaite interroger une table selon 2 critères distincts et je bloque un peu. J'aimerai compter le nombre d'éléments qui répondent à un premier critère et de nouveau compter ces éléments mais selon un autre critère. Pour l'instant j'arrive à afficher un résultat grâce à UNION mais j'aimerais afficher cela sur une seule et même ligne.

    Voilà ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select count(distinct o.idobjet) as nb_objets_a
    from tobjets o
    where o.idtypeobjet=1
    union
    select count(distinct o.idobjet) as nb_objets_b
    from tobjets o
    where o.idtypeobjet=2
    J'aimerai que mon résultat s'affiche en colonnes plutôt qu'en lignes:

    Nom : 01.jpg
Affichages : 2806
Taille : 35,4 Ko

    PS: j'ai cherché du coté de PIVOT mais j'ai du mal à comprendre la syntaxe. Si quelqu'un à une solution, j'en serais ravi.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il suffit de mettre un CASE dans le COUNT:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select sum(case when id = 1 then 1 else 0 end) as count1,sum(case when id = 2 then 1 else 0 end) as count2
    from matable

    Tatayo.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Merveilleux, je ne savais pas que l'on pouvais mettre un CASE à cet endroit et de cette façon.
    Merci beaucoup !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mai 2014
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Juste une remarque complémentaire: quand je veux ajouter un compte sur une autre table et que je fais une jointure, les totaux ne sont plus du tout les mêmes et faux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select 
    sum(case when a.id = 1 then 1 else 0 end) as count1,
    sum(case when a.id = 2 then 1 else 0 end) as count2,
    count(distinct b.id) as count_b
    from matable_a a
    join  matable_b on  a.id=b.id
    Comment puis-je contourner ce problème ?

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonjour ,

    Le "transform pivot" de Access est transcriptible en SQL via mysql ? Je pensais la chose pourtant impossible ...

    En somme une colonne avec X (x étant inconnu) , le nombre de valeur différente sur une colonne donnée peut se transposer automatiquement en autant de colonne que de valeur unique ?

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

Discussions similaires

  1. Transposer lignes en colonnes
    Par g_marpillat dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/09/2017, 16h32
  2. [AC-2007] probleme de requete sql transposer ligne et colonne
    Par nicogef dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2015, 19h38
  3. [XL-2010] Transposer ligne en colonne et création de doublons
    Par hatem_rc dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/11/2013, 00h04
  4. [XL-2007] Transposer lignes et colonnes contenant des formules
    Par cdaumas78 dans le forum Conception
    Réponses: 11
    Dernier message: 24/02/2013, 21h05
  5. proc tabulate : transposer ligne et colonne
    Par Lou12 dans le forum SAS Base
    Réponses: 1
    Dernier message: 26/05/2010, 13h20

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