Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1581 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Regrouper plusieurs résultats sur une seule ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Regrouper plusieurs résultats sur une seule ligne

n°2451941
vylkor
Posté le 30-07-2023 à 19:25:25  profilanswer
 

Bonjour  :hello:  
 
Je suis face à une problématique et je n'arrive pas a trouver la solution. J'ai besoin d'extraire un paquet de données et les regrouper (extraction unique dans le cadre d'une étude). Mais je n'arrive pas a tout mettre sur la même ligne  [:canaille]  
 
En gros mon extraction au départ me donne un tableau sous la forme suivante:

Code :
  1. LOT   | ACTION           | QTY
  2. Lot A | Consommation | 200
  3. Lot A | Consommation | 100
  4. Lot A | Reintroduction  | 80
  5. Lot B | Consommation | 40
  6. Lot B | Consommation | 100
  7. Lot B | Consommation | 80
  8. Lot B | Reintroduction | 20
  9. Lot C | Consommation | 200
  10. Etc...


 
J'ai donc fait un truc du genre:
 

Code :
  1. Select LOT,
  2. case ACTION when 'Consommation' then SUM(QTY) end as Consommation,
  3. case ACTION when 'Réintroduction' then SUM(QTY) end as Reintroduction
  4. From *mes tables*
  5. Where *mes conditions*
  6. Group by LOT, ACTION


 
Sauf que ça m'affiche une ligne par action possible dans le tableau:

Code :
  1. LOT    | Consommation | Reintroduction
  2. Lot A  | 300                 |
  3. Lot A  |                       | 80
  4. Lot B  | 220                 |
  5. Lot B  |                       | 20
  6. Lot C  | 200                 |
  7. Etc...


 
Au lieu de tout mettre sur la même ligne. Des idées sur comment faire en sorte que tout aille sur la même ligne?
 
Merci d'avance  :jap:  
 
PS: Dans les données réelles, il y à 8 cas de figures (colonnes) et dans les 400 000 lignes au départ :o

mood
Publicité
Posté le 30-07-2023 à 19:25:25  profilanswer
 

n°2451944
TotalRecal​l
Posté le 31-07-2023 à 08:39:21  profilanswer
 

Ben il fait exactement ce que tu lui demandes : il te génère deux colonnes "Consommation" et "Reintroduction" et vient y mettre NULL ou bien la quantité selon le type de l'Action.

 

Je comprends pas trop pourquoi tu compliques en fait, tu n'as pas donné ton modèles mais j'ai l'impression que :

 


Select
LOT,
ACTION,
SUM(QTY) as Qty
From *mes tables*
Where *mes conditions*
Group by LOT, ACTION

 

Sans fioritures aurait directement donné ce que tu veux.
Si c'est pas ça donne un exemple complet qu'on puisse comprendre :o (schéma initial, échantillon de données, exemple de résultat voulu)


Message édité par TotalRecall le 31-07-2023 à 08:40:03

---------------
Topic .Net - C# @ Prog
n°2451945
vylkor
Posté le 31-07-2023 à 11:00:30  profilanswer
 

Par mettre sur la même ligne, je voulais dire:
 

Code :
  1. LOT    | Consommation | Reintroduction
  2. Lot A  | 300                 | 80
  3. Lot B  | 220                 | 20
  4. Etc...


 
Au final j'ai trouvé ma réponse:
 

Code :
  1. Select LOT,
  2. SUM(case ACTION when 'Consommation' then QTY end) as Consommation,
  3. SUM(case ACTION when 'Réintroduction' then QTY end) as Reintroduction
  4. From *mes tables*
  5. Where *mes conditions*
  6. Group by LOT


 
Il faudra vraiment que j'arrive a ce qu'ils me fassent une formation SQL un de ces jours, j'ignorais totalement que l'on pouvait mettre le sum(...) a l'exterieur du case...

n°2451974
TotalRecal​l
Posté le 31-07-2023 à 17:59:20  profilanswer
 

Ah oui, effectivement c'était pas clair pour moi.
 
Comme je disais (sans aucune méchanceté) à l'avenir n'hésite pas à être plus précis, en donnant un exemple concret de jeu de données à traiter, et de résultat attendu.  
Et pour parfaire tu peux même donner le schéma (CREATE) et les Inserts pour tout ça si le truc est un tout petit peu compliqué (là c'était pas nécessaire cela dit), comme ça on peut recréer les données et te faire un truc qui marche.


---------------
Topic .Net - C# @ Prog
n°2451976
vylkor
Posté le 31-07-2023 à 20:29:51  profilanswer
 

TotalRecall a écrit :

Ah oui, effectivement c'était pas clair pour moi.
 
Comme je disais (sans aucune méchanceté) à l'avenir n'hésite pas à être plus précis, en donnant un exemple concret de jeu de données à traiter, et de résultat attendu.  
Et pour parfaire tu peux même donner le schéma (CREATE) et les Inserts pour tout ça si le truc est un tout petit peu compliqué (là c'était pas nécessaire cela dit), comme ça on peut recréer les données et te faire un truc qui marche.


 
Désolé, pas évident car la politique d'entreprise est a la parano la plus complète. Sortir ne serais-ce qu'un bout de schéma de la BDD est perçu comme une mise en dangers... Un collègue à littéralement blêmi quand j'ai dit que j'avais demandé de l'aide en ligne pour une extraction. Même sur site, il est interdit de positionner les salles serveur sur des plans ou de dire a des gens hors de l'IT où elles se situent...
 
Compliqué de réussir a anonymiser suffisamment pour que ça soit impossible de reconnaitre quoi que ce soit tout en gardant assez de détails pour que ça soit représentatif :/

n°2451982
TotalRecal​l
Posté le 01-08-2023 à 08:53:37  profilanswer
 

C'est très con comme raisonnement même si je comprends le besoin de secret dans certains secteurs.  
Y a rien qui empêche de sortir des colonnes A, B, C avec des données Cas 1, Cas 2, et des nombre 100, 200, 300, et Monsieur Titi, Madame Tutu.  
Ca prend pas très longtemps de faire une ou deux tables avec ça et générer les inserts.
Il doit être vachement imaginatif le mec qui arrive à violer des secrets industriels avec ça.
 
Après il y a des gens qui sont juste paranoïaques ou qui sont tellement excités de bosser pour un truc un peu sensible qu'ils en font des tas en mode je me la joue agent secret.


---------------
Topic .Net - C# @ Prog
n°2451984
rat de com​bat
attention rongeur méchant!
Posté le 01-08-2023 à 09:22:15  profilanswer
 

Ca donne envie d'y bosser dans cette boîte... :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2452032
rufo
Pas me confondre avec Lycos!
Posté le 02-08-2023 à 22:36:40  profilanswer
 

Suffit de transposer ton pb réel en un pb équivalent passe-partout pour ne pas avoir de souci de confidentialité. Perso, c'est ce que je fais depuis des années quand je viens chercher de l'aide ici. Ca n'a jamais posé de problème et au final, ça m'a fait gagner du temps, l'aide que j'ai reçue.
 
Du reste, ça m'est même déjà arrivé que juste après avoir rédigé le topic et en ayant cherché un pb équivalent, je trouve moi-même la solution. Enoncer correctement un pb, c'est souvent être sur la bonne voie pour le résoudre. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2452100
vylkor
Posté le 03-08-2023 à 22:31:56  profilanswer
 

rufo a écrit :

Suffit de transposer ton pb réel en un pb équivalent passe-partout pour ne pas avoir de souci de confidentialité. Perso, c'est ce que je fais depuis des années quand je viens chercher de l'aide ici. Ca n'a jamais posé de problème et au final, ça m'a fait gagner du temps, l'aide que j'ai reçue.
 
Du reste, ça m'est même déjà arrivé que juste après avoir rédigé le topic et en ayant cherché un pb équivalent, je trouve moi-même la solution. Enoncer correctement un pb, c'est souvent être sur la bonne voie pour le résoudre. ;)


 
Yep, ça m'est déjà arrivé plusieurs fois de trouver la solution en venant l'écrire ici  :whistle:  
 
Mais je rajouterais plus d'infos a l'avenir. Peut être pas autant que dans les vrais requêtes (quand y à 9 tables dans le From avec les 2/3 qui ne servent qu'a relier des tables éloignées les unes des autres par exemple :o ), mais plus que là :)

n°2457536
Cygne_d_Et​ang
Punk's not dead
Posté le 07-11-2023 à 14:25:34  profilanswer
 

Si je comprend bien la demande, perso, j'utilise cette fonction:
https://docs.oracle.com/cd/E11882_0 [...] SQLRF30030


---------------
Arrière les Esquimaux! Je rentre seul. Un matador rentre toujours seul! Plus il est grand, plus il est seul. Je vous laisse à vos banquises, à vos igloos, à vos pingouins. ¡ Por favor Señora! À quelle heure le train pour Madrid?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Regrouper plusieurs résultats sur une seule ligne

 

Sujets relatifs
Créer une appli android de sondage et publier les résultatsChanger la couleur des liens déjà vus des résultats google search
Saut de ligne code PHPEcrire listview
lire plusieurs fichiers qui contienne une date de ma teextboxMon 1er blog en ligne
[Résolu] PhpMyAdmin : msg d'erreur avec plusieurs requêtes SQLLightBox qui marche pas en ligne mais en local
Excel / google sheet Plusieurs set de data sur même axe x (Insoluble?)[Access] Regrouper plusieurs résultats d'1 requête sur 1 seule ligne?
Plus de sujets relatifs à : Regrouper plusieurs résultats sur une seule ligne


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)