J'ai le jeu de données suivant: Je voudrais une requête pouvant la sortir à une ligne par AA_ASSET_ID: P> ID Lab_System Equipment Accessory
1023 Workcell Sorter Head tip
4 Réponses :
avec agrégation conditionnelle:
ID LAB_SYSTEM EQUIPMENT ACCESSORY 1023 Workcell Sorter Head tip
Celui-ci semble faire ce dont j'ai besoin. Merci beaucoup à tous.
Avec l'opérateur de pivot, vous pouvez le faire comme ceci: (NOTE - La clause avec la solution ne fait pas partie de la solution; Je l'utilise que parce que je n'ai pas votre table réelle. Supprimer quand vous testez sur un réel Tableau)
with assets (aa_asset_id, asset_id, asset_name, class_id, class_name) as ( select 1023, 1023, 'Head tip', 4, 'Accessory' from dual union all select 1023, 1056, 'Sorter' , 2, 'Equipment' from dual union all select 1023, 1557, 'Workcell', 1, 'Lab System' from dual ) select * from (select aa_asset_id, asset_name, class_name from assets) pivot (max(asset_name) for class_name in ('Lab System' as "Lab System", 'Equipment' as "Equipment" , 'Accessory' as "Accessory" )) ; AA_ASSET_ID Lab System Equipment Accessory ----------- ---------- -------- --------- 1023 Workcell Sorter Head tip
Vous pouvez utiliser ou peut-être quelque chose comme p> pivot code>
pivot xml code>, afin d'avoir des noms de colonne dynamiques vs. / p>
Vous avez la possibilité d'utiliser le sortie: strong> p> démo sur SQL FIDDLE . P> P> modèle code>
clause:
C'est oracle 12c
Y a-t-il seulement 3 noms de classe?
Cela peut être fait avec pivot, mais il y a quelques questions à considérer (puis répondez ici, afin que nous puissions aider). (1) Vous souciez-vous des autres données dans la table, comme Asset_ID et CLASS_ID? (2) Tous les noms de classe sont-ils connus à l'avance B> (sans se jeter sur les données dans la table)? (3) Les noms de colonne sont-ils écrits dans cette affaire exacte (capuchon initial, minuscule pour le reste du mot) une partie de votre exigence?
Il peut y avoir plus de 3 mais pour mon cas d'utilisation particulier, je ne suis intéressé que par ces 3.
Les noms de classe sont constants et connus. Ils sont dans une table apparentée mais ils ne vont pas changer. Je sais que 1,2,4 sont ce qui m'intéresse. Oui Les noms de classe sont dans ce cas exactement.