SQL - Zeilen/Spalten vertauschen
Till
- datenbank
Hallo in die Runde,
ich habe ein kleines SQL-Problem, bei dem ich Hilfe gebrauchen könnte. Ich habe mir die Frage schon oft gestellt - hatte glaube ich auch schon eine Lösung (mit PL/SQL), auf die ich jetzt aber nicht mehr kommen ...
Ich möchte per Abfrage in einer Tabelle zeilenweise stehende Einträge als Spalten anzeigen lassen. Hier das zugehörige Beispiel:
pseudoID | Klasse | Flaeche
-------------------------------
001 | 1 | 100
001 | 2 | 50
001 | 3 | 200
002 | 2 | 200
002 | 3 | 100
...
soll dargestellt (in neue Tabelle exportiert) werden als:
ID | Klasse_1 | Klasse_2 | Klasse_3
-----------------------------------------
001 | 100 | 50 | 200
002 | 0 | 200 | 100
...
um schließlich daraus abzuleiten:
ID | Klasse_1 | Klasse_1proz | Klasse_2 ...
-------------------------------------------------
001 | 100 | 40 [sind %] | 50
002 | 0 | 0 | 200
...
Vorschläge auch nur zu Teillösungen sind natürlich willkommen!
Übrigens: Ich benutze z.Zt. (leider!) *MS-Access* 2003 ...
Vielen Dank,
Till
Hallo
pseudoID | Klasse | Flaeche
001 | 1 | 100
001 | 2 | 50
001 | 3 | 200
002 | 2 | 200
002 | 3 | 100
...soll dargestellt (in neue Tabelle exportiert) werden als:
ID | Klasse_1 | Klasse_2 | Klasse_3
001 | 100 | 50 | 200
002 | 0 | 200 | 100
...
Übrigens: Ich benutze z.Zt. (leider!) *MS-Access* 2003 ...
Was heisst hier leider? Du hast Glück - und das meine ich ernst.
Jet-SQL, der SQL-Dialekt von MS Access unterstützt schon seit Ewigkeiten Kreuztabellenabfragen. Damit sollte sich Dein Problem lösen lassen. Bei den meisten anderen SQL-Dialekten wirst Du basteln müssen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Jet-SQL, der SQL-Dialekt von MS Access unterstützt schon seit Ewigkeiten Kreuztabellenabfragen. Damit sollte sich Dein Problem lösen lassen. Bei den meisten anderen SQL-Dialekten wirst Du basteln müssen.
MERCI!!! Funktioniert super ... Der kleine Hinweis hat mir viel Zeit erspart!
Was heisst hier leider? Du hast Glück - und das meine ich ernst.
Naja, wenn man mal mit Oracle gearbeitet hat, dann erscheint MS Access als Datenbank so geeignet wie MS Word zum Layouten. ;) Aber in diesem Fall ist es wohl tatsächlich ein Glücksfall! Und ich möchte hier bitte keine Grundsatz-Diskussion über Datenbanksysteme vom Zaun brechen ... ;)
Viele Grüße,
Till
moin,
Jet-SQL, der SQL-Dialekt von MS Access unterstützt schon seit Ewigkeiten Kreuztabellenabfragen. Damit sollte sich Dein Problem lösen lassen. Bei den meisten anderen SQL-Dialekten wirst Du basteln müssen.
[..]ich möchte hier bitte keine Grundsatz-Diskussion über Datenbanksysteme vom Zaun brechen ... ;)
Ich will da auch nicht weiter reinreden, aber wenn es das RDMS nicht hergibt: Kreuztabellen (gelegentlich auch als Pivottabellen bezeichnet) lassen sich ganz hervorragend mit zweidimensionalen hashes erstellen, z.B. in PERL, also innerhalb eines Scripts was das Ergebnis einer DB-Query weiterverarbeitet.
--roro
Hallo Till,
Naja, wenn man mal mit Oracle gearbeitet hat, ...
Für Oracle gibts in solchen Fällen Ask Tom und dort dann
Pivot Query oder auch Pivoting a result set
Grüße
Marcus