Oracle SQL: Transponieren von Spalten in Zeilen
Gab es einige Fragen auf, aber ich konnte nicht finden einen entsprechenden Ergebnis für mich. Ich habe eine Abfrage, die gibt mir 2 Spalten der Ergebnisse:
Day Tot_dLS
01-Sep-12 10000
02-Sep-12 9920
Möchte ich die Umsetzung der Laufenden, damit Sie es liest:
01-Sep-12 02-Sep-12
10000 9920
Ist das möglich?
Kennen Sie zur compile-Zeit, dass sich zwei Zeilen (oder einer festen Anzahl von Zeilen) zurückgegeben werden, und dass die beiden Spaltennamen, die Sie wollen, sind "01-Sep-12" und "02-Sep-12"? Brauchen Sie diese Spalte Namen oder könnten Sie verwenden generische Spalten-Namen?
club-oracle.com/forums/... Lesen Sie den ganzen Weg hinunter
das obige Beispiel eher Allgemeine, meinem eigentlichen Ergebniszeilen haben könnte 10,20,30 verschiedene Termine innerhalb.Ich würde nicht unbedingt die Spalte-Namen zu Lesen, die Datum, um Ihre Frage zu beantworten.
Die Anzahl der Spalten einer SQL-Anweisung zurückgibt, muss fest an der Zeit, dass die Abfrage kompiliert wird. Gibt es eine maximale Anzahl von Spalten, die Sie erlauben könnte? Wenn Sie die Anzahl der Spalten zu variieren, dann sollten Sie einen Blick auf dynamisch Aufbau der SQL-Anweisung jedes mal, wenn Sie brauchen, um es auszuführen, so dass die Anzahl der Spalten im Ergebnis ist immer richtig. Fügt hinzu, dass einiges an Komplexität.
Könnte ich tun, sagen wir, 30 Spalten, aber ich brauchen würde, um das Datum zu ändern range-Einschränkungen für die Abfrage-im Laufe der Zeit. @Andrea Bergia auf, um etwas mit seiner Antwort?
club-oracle.com/forums/... Lesen Sie den ganzen Weg hinunter
das obige Beispiel eher Allgemeine, meinem eigentlichen Ergebniszeilen haben könnte 10,20,30 verschiedene Termine innerhalb.Ich würde nicht unbedingt die Spalte-Namen zu Lesen, die Datum, um Ihre Frage zu beantworten.
Die Anzahl der Spalten einer SQL-Anweisung zurückgibt, muss fest an der Zeit, dass die Abfrage kompiliert wird. Gibt es eine maximale Anzahl von Spalten, die Sie erlauben könnte? Wenn Sie die Anzahl der Spalten zu variieren, dann sollten Sie einen Blick auf dynamisch Aufbau der SQL-Anweisung jedes mal, wenn Sie brauchen, um es auszuführen, so dass die Anzahl der Spalten im Ergebnis ist immer richtig. Fügt hinzu, dass einiges an Komplexität.
Könnte ich tun, sagen wir, 30 Spalten, aber ich brauchen würde, um das Datum zu ändern range-Einschränkungen für die Abfrage-im Laufe der Zeit. @Andrea Bergia auf, um etwas mit seiner Antwort?
InformationsquelleAutor Americo | 2012-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da können Sie sich wieder eine Feste Anzahl von Spalten enthalten und Sie können generische Spalten-Namen, die Sie tun können eine standard-pivot-Abfrage
Ja. Ich aufgehört, die 25 Zeilen, die Sie erzeugen würden
col_4
durchcol_29
in genau der gleichen Weise, ich habecol_1
durchcol_3
. Müssten Sie explizit auflisten, ich habe Sie weggelassen, um zu vermeiden, überladen meine Antwort.InformationsquelleAutor Justin Cave
Nicht wirklich mit einer SQL-Abfrage, da Sie die gleiche Spalte enthalten zwei unterschiedliche Datentypen. Können Sie mit einigen tricks (casting alles zu string) - aber solche Dinge sind viel besser in der Präsentation, die die Anwendung oder der Bericht selbst, als aus der Abfrage.
InformationsquelleAutor Andrea Bergia
Diesem code:
erzeugt diese Ausgabe mit SQL*Plus auf einer Oracle 11g (11.2.0) Datenbank.
InformationsquelleAutor Tai Paul
Können Sie
CASE
Aussagen und ein Aggregat durchführen. Sie können so etwas wie dies:dann müssten diese ausgebaut werden, um weitere Spalten hinzuzufügen.
InformationsquelleAutor Taryn