Ich habe ein Problem beim Erstellen einer Abfrage mit Pivot. Ich habe eine Tabelle, die 4 SpaltenOrakel Sql Pivot gruppiert meine Daten
col1 | col2 | col3 | col4
1 | 1 | 5 | 2
1 | 2 | 6 | 2
1 | 3 | 7 | 2
1 | 4 | 8 | 2
1 | 1 | 5 | 2
1 | 2 | 6 | 2
1 | 3 | 7 | 2
1 | 4 | 8 | 2
ich Pivot bin mit haben, so kann ich Ausgabeelemente wie folgt aus:
col1 | col2 | col3
Hier ist die Abfrage:
select col1, "1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"
from (
select col1, col2, col3
from tbl
where col4 = 2
)
pivot
(
max(col2)
for col3
in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
)
Der Code funktioniert die ganze Zeit außer wenn ich 2 identische Datensätze in der Datenbank habe. Es gruppiert sich dann und wird als eins angezeigt. Ich möchte es als 2 separate, aber gleiche Zeilen ausgeben. Die einfachste Lösung, die ich sehe, ist, dass ich eine andere Spalte in die Tabelle einfüge, die als ID funktionieren würde. Aber weil ich diese ID nirgendwo sonst verwenden werde, denke ich, dass es irgendwie sinnlos ist und es auch einfacher und weniger Arbeit wäre, den Code ein wenig zu ändern.
Der obige Code gibt dies:
1 5 6 7 8 9
und ich würde dies mag:
1 5 6 7 8 9
1 5 6 7 8 9
Sie haben Recht; Sie benötigen eine zusätzliche Spalte, um die Teilmengen der Daten zu bestimmen. Dies könnte nur eine row_number() sein, die Sie verwenden, um alle Zeilen in "erste Zeile der (col1, col2, col3) Werte, zweite Zeile der (col1, col2, col3) Werte usw." – Boneist
Bitte wählen Sie ein DBMS (Sql Server oder Oracle) oder Ihre Frage gilt für beide? –
@Boneitist Ja scheint, das ist die beste Idee. – Kristjan