Zurückgeben mehrerer Werte in der gleichen Zeile, basierend auf einem Wert in der gleichen Tabelle
Ich war ziemlich ratlos, für eine Weile, wurde versucht, die Ergebnisse erhalten Sie von einem unserer Tische auf der Basis der anderen Ergebnisse, und nicht zurückgeben, die mehr als eine Zeile für jeden Wert, es ist schwer zu erklären für mich, so werde ich ein Beispiel geben.
Wir haben Werte, zum Beispiel ÄPFEL. Jeder Apfel hat seine eigene Seriennummer, SERIENNUMMER. für ein paar ÄPFEL, es gibt mehrere (bis zu 6) SERIELLE Werte.
ID APPLE SERIAL
2052 5035 1
2055 5035 4
2058 5035 8
2070 5040 5
In meine Ergebnisse, ich will wieder jeden APFEL einmal, und alle seriellen zugeordnet, zum Beispiel:
APPLE SERIAL_1 SERIAL_2 SERIAL_3 SERIAL_4
5035 1 4 8
5040 5
Habe ich versucht eine Abfrage machen, die im Grunde verbindet die gleiche Tabelle 4-mal, nämlich serial_x nicht in (anderen Serien). Das problem mit diesem ist, dass es mehrere Ergebnisse wie dieses:
APPLE SERIAL_1 SERIAL_2 SERIAL_3 SERIAL_4
5035 1 4 8
5035 1 8 4
5035 4 1 8
5035 4 8 1
5035 8 1 4
5035 4 4 1
5040 5
Dies ist offensichtlich, weil apple 5035 mit einer anderen seriellen tritt mehrfach in der Tabelle, und es wird alle möglichen Kombinationen der drei Serien zugeordnet. Ich bin sicher, es gibt eine einfache Möglichkeit, dies zu tun, aber ich habe versucht, für eine lange Zeit und habe nicht in der Lage zu produzieren ein gutes Ergebnis. Kann jemand helfen?
Es ist eine PIVOT-Funktion in Oracle.
InformationsquelleAutor Jamie Joe | 2011-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, diese, es ist nicht elegant, aber es funktioniert:
Sie sollten überprüfen Sie Ihre tags: warum haben Sie MySql wenn Sie mit Oracle?
InformationsquelleAutor Marco
Sie könnten versuchen, mit der Aggregat-Funktion GROUP_CONCAT-und GROUP BY-APPLE
Getestet in MySQL:
Ich nicht hatte, aber aus Angst es nicht funktioniert ich habe es gerade ausprobiert und es hat funktioniert. Sehen, was ich angehängt auf meine Antwort.
Hey, wie die obige Lösung, die GROUP_CONCAT Funktion funktioniert nicht mit Oracle, wieder, ich sollte gesagt haben, in der ursprünglichen post-ich bin mit Oracle. Trotzdem sollte es eine oracle-äquivalent, ich werde einen Blick hinein. vielen Dank 🙂
Joe ja der [mysql] - tag ist irreführend. Ich habe versucht, um festzustellen, ob man mit MySQL-oder Oracle-von der Frage, konnte aber nicht. Über GROUP_CONCAT in Oracle, vielleicht dieser kann helfen?
es funktioniert nicht: OP will jeder Seriell in einer anderen Spalte, nicht eine einzelne Spalte mit Seriennummern beigetreten!!
InformationsquelleAutor ghbarratt
Oracle 11g hat die LISTAGG-Funktion, das scheint zu tun, was du bist suchen für. Ich habe keine 11g dabei, aber die folgenden sollten in der Nähe von:
Bekommt man nicht die schöne Spalte überschriften für die einzelnen serielle Element, aber es sollte funktionieren.
InformationsquelleAutor DCookie
Ich würde so etwas tun:
Natürlich Sie nicht brauchen, die MIT block, da können Sie die Verwendung Ihres echten Tisch, so dass Ihre Abfrage starten würde, bei der WÄHLEN Sie.
Dadurch erhalten die folgende Ausgabe:
InformationsquelleAutor Craig
Ein bisschen spät, um das Spiel, aber es ist keine Antwort mit der PIVOT-Klausel in Oracle, interessant wäre es trotzdem.
SQLFiddle Beispiel: http://sqlfiddle.com/#!4/3cede/2
InformationsquelleAutor a_horse_with_no_name