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

Développement SQL Server Discussion :

Regrouper plusieurs lignes en colonnes [2008]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut Regrouper plusieurs lignes en colonnes
    Bonjour,

    J'ai une requête présentant l'âge et le salaire d'une personne:

    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 
    	YEAR(GetDate()) - YEAR(I_Birth_D) AS 'Age', 
    	Annual_Salary AS 'Salaire' 
    FROM 
    	evolution_salaire 
    	INNER JOIN user_salary ON (BUS_Idx = BES_BUS_Idx) 
    	INNER JOIN user ON (BES_Emp_Nb = User_Emp_Nb) 
    	INNER JOIN user_infos ON (I_Emp_Nb = User_Emp_Nb) 
    WHERE 
    	BES_Year = '2014' 
    	AND User_Supervisor_Nb = '080000' 
    ORDER BY 
    	Age
    qui donne le résultat suivant:

    Age Salaire
    22 13942,5
    42 62000
    52 120000
    52 63654,93
    53 75000
    53 95950
    55 43704,66
    57 125000
    57 184000
    58 39518,57
    60 160000

    J'aurais besoin d'avoir le résultat sous la forme suivante:

    Age Salaire Salaire2
    22 13942,5
    42 62000
    52 120000 63654,93
    53 75000 95950
    55 43704,66
    57 125000 184000
    58 39518,57
    60 160000

    Tout en prenant en compte que je peux avoir un nombre indéfini de personnes du même âge.
    J'ai exploré l'option du PIVOT, mais je crois que je ne l'ai pas bien compris, je me retourne donc vers vous.

    En espérant que vous pourrez m'aider,
    Bonne journée,

    Jérémy

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Si vous avez un nombre indéfini de personne du même age, alors vous ne pourrez pas le faire en SQL (car une requête SQL renvoie un nombre prédéfini de colonne) à moins de faire du SQL Dynamique.

    La meilleure alternative, de loin, c'est de traiter cela dans votre langage de programmation.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut
    Bonjour,

    C'est exactement ce que je voulais éviter.
    Il va donc falloir faire un peu de développement annexe afin de répondre à la demande.

    Merci pour votre réponse.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par jeremy.bras Voir le message
    C'est exactement ce que je voulais éviter.
    Pourquoi ?

    Si votre requête est déjà exploitée par un langage de haut niveau, ça sera très simple d'obtenir le résultat voulu.

    Sinon, exposez un peu votre contexte, on pourra peut être trouver des alternatives ou compromis...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Par défaut
    Quand vous dites "traiter cela dans votre langage de programmation", j'entends par là que je vais devoir utiliser du php afin de requêter et mettre en forme mon affichage du résultat.
    Il n'y a aucun soucis technique, je saurais le faire.

    J'attendais un résultat comme annoncé dans mon descriptif afin de copier/coller la requête dans un erp de gestion de ressources humaines, qui gère l'affichage sous forme de graphique, d'où ma préférence à éviter de devoir créer une page de toutes pièces.
    Etant donné que c'est dans un contexte professionnel, je préfère ne pas trop sortir de cet environnement que me propose l'erp en développant des fonctions/scripts dès que j'arrive à une de ses limites (bien que ce soit tentant).

    Une alternative serait de créer un script transact-sql, afin de générer une requête que j'executerais ensuite. Malheureusement, l'erp (encore) m'interdit de faire ça.

    La dernière solution que je vois est une table créée de toutes pièces que je viendrais nourrir une fois par jour grâce à un script php.
    Il ne me resterait plus qu'à effectuer un simple SELECT sur cette table dans l'environnement RH.

    N'hésitez pas à me demander plus d'informations si je n'ai pas été assez clair.

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par jeremy.bras Voir le message
    La dernière solution que je vois est une table créée de toutes pièces

    Et... combien mettrez vous de colonnes dans cette table, puisque le nombre de personnes (et donc de salaires) est indéfini ?

    vous pourriez envisager de fournir cette liste de salaires dans une seule colonne de type XML, si toutefois votre erp sait le gérer...

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

Discussions similaires

  1. Une Legend sur plusieurs lignes ou colonnes
    Par Copepode dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/05/2021, 11h53
  2. regrouper plusieurs lignes dans une colonne
    Par Satch dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/08/2009, 12h39
  3. Réponses: 2
    Dernier message: 15/09/2008, 19h25
  4. Réponses: 4
    Dernier message: 29/08/2008, 15h21
  5. [SQL] Remplir une base SQL à partir d'un tableau à plusieurs lignes et colonnes
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/08/2007, 09h56

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