Pivot auf Oracle 10g
Ich bin mit oracle 10g.
Ich habe eine temporäre Tabelle TEMP.
TEMP hat folgende Struktur:-
USER COUNT TYPE
---- ----- ----
1 10 T1
2 21 T2
3 45 T1
1 7 T1
2 1 T3
Brauche ich eine Abfrage, die alle Typen hat Sie die Spaltennamen und-Typen können einen beliebigen Wert haben wie T1, T2,..Tn
und das Ergebnis wird ähnlich sein:-
USER T1 T2 T3
---- -- -- --
1 17 0 1
2 0 21 1
3 45 0 0
und Spalte Benutzer zeigt alle Benutzer und - T1, T2
Spalte zeigt die Gesamtzahl der Arten.
keine Ahnung, wie dies zu tun
Sie müssen geben eine klare Beispiel dafür, was dein Ergebnis sein soll, mit der Beispiel-Tabelle.
bitte überprüfen Sie Beispiel-Ausgabe in Frage bearbeitet
es ist keine statische sql-Lösung, es sei denn, der T1.. Tn-Betrag ist begrenzt und bekannt. ansonsten, dynamische sql-und ref Cursor werden Ihre Optionen
Sie müssen geben eine klare Beispiel dafür, was dein Ergebnis sein soll, mit der Beispiel-Tabelle.
bitte überprüfen Sie Beispiel-Ausgabe in Frage bearbeitet
es ist keine statische sql-Lösung, es sei denn, der T1.. Tn-Betrag ist begrenzt und bekannt. ansonsten, dynamische sql-und ref Cursor werden Ihre Optionen
InformationsquelleAutor F11 | 2012-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Oracle 10g, gab es keine
PIVOT
Funktion, aber Sie können zu replizieren, mit der ein Aggregat mit einemCASE
:Sehen SQL Fiddle mit Demo
Wenn Sie Oracle 11g+ dann können Sie die
PIVOT
Funktion:Sehen SQL Fiddle mit Demo
Wenn Sie eine unbekannte Anzahl von Werten zu transformieren, dann können Sie ein Verfahren zum generieren einer dynamischen version:
dann, um den code auszuführen:
Das Ergebnis für alle Versionen ist die gleiche:
Edit: Basierend auf Ihren Kommentar, wenn Sie möchten, eine
Total
Bereich, der einfachste Weg ist, die Abfrage in einem anderenSELECT
ähnlich wie diese:Sehen SQL Fiddle mit Demo
Ihre beste Wette ist, stellen Sie Ihre Abfrage in einem anderen wählen Sie, ähnlich wie in dieser demo - sqlfiddle.com/#!4/a42bb/5
Ich brauche noch eine Hilfe.Ich habe zu zeigen, Summe aller Zeilen mit header.Insgesamt wird Hinzugefügt, mit Kopfzeile, in der Summe ist die Summe der Spalte.Wie Benutzer|Total_Total|T1_Total|T2_Total|
Dann verwenden Sie spaltenaliasnamen auf der select-Anweisung. So wählen usr User, etc. aber wenn Sie noch weitere Fragen haben, sollten Sie veröffentlichen eine neue Frage.
ich habe es gepostet als eine neue Frage,stackoverflow.com/questions/14037006/...
InformationsquelleAutor Taryn
Hier ist ein code zur Erstellung der Tabelle:
Und hier ist ein code für Ihre Anfrage:
Und das Ergebnis ist das, was Sie wollte.
Überprüfen Sie es auf SQL Fiddle-Link hier
InformationsquelleAutor kangbu
Bitte überprüfen Sie die Abfrage:
Daten auszuwählen, verwenden Sie Anweisung
OPEN CUR_TURN_TIME FOR V_QUERY;
im OrtDBMS_OUTPUT.PUT_LINE(V_QUERY);
, woCUR_TURN_TIME
ist der cursor deklariert wurde das Paket.InformationsquelleAutor TechDo