SQL: Ergebnismenge einer Pivotisierung in einer Spalte ausgeben

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Mittels Pivotisierung wird die gewünschte Zeilenanzahl je Datensatz mit unterschiedlicher Nummer bereitgestellt. In der Hauptabfrage wird über einen CASE-Ausdruck bzw. in Access über Switch() oder IIf() die Nummer ausgewertet und der entsprechende Spaltenwert eingetragen.


Im folgenden sollen diese Mitarbeiter-Informationen in der Abfrage dargestellt werden:

info
Name:   Kühne
Job:    Abteilungsleiter
Gehalt: 2450
(Null)
Name:   König
Job:    Hauptgeschäftsführer
Gehalt: 5000
(Null)
Name:   Müller
Job:    Sachbearbeiter
Gehalt: 1300
(Null)

Lösung für Jet-SQL

Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank, sowie die Pivottabelle t1000 vorhanden sein.

SELECT Switch( n = 1, 'Name:   ' & ma_name,
               n = 2, 'Job:    ' & job,
               n = 3, 'Gehalt: ' & gehalt) AS info
FROM   ( SELECT ma_nr,
                ma_name,
                job,
                gehalt,
                n
         FROM   mitarbeiter,
                t1000
         WHERE  abt_nr = 10 AND
                n BETWEEN 1 AND 4 ) AS v
ORDER  BY ma_nr, n

Lösung für PostgreSQL

SELECT CASE n
            WHEN 1 THEN 'Name:   ' || ma_name
            WHEN 2 THEN 'Job:    ' || job
            WHEN 3 THEN 'Gehalt: ' || gehalt END AS info
FROM   ( SELECT ma_name,
                job,
                gehalt,
                ROW_NUMBER() OVER ( PARTITION BY ma_nr ORDER BY ma_nr ) AS n
         FROM   mitarbeiter,
                generate_series( 0, 3 ) -- 4 Zeilen erzeugen
         WHERE  abt_nr = 10 ) AS v

Hier ist ein entsprechender DBFiddle.



Zurück zur Übersicht