Betrachtet man Oracle 10g
, gibt es eine Möglichkeit, eine Spalte basierend auf angegebenen Zeilen umzubenennen?SQL: Dynamisches Umbenennen von Spalten basierend auf Zeilenwerten
Lassen Sie mich zuerst einen Hintergrund geben. Die Anforderung bestand darin, Zeilen zu drehen und sie in Spalten umzuwandeln. Da Oracle 10g die Funktion PIVOT nicht unterstützt, haben wir mit max and case
Keywords gearbeitet.
Jetzt ist das Problem das. Gibt es eine Möglichkeit, eine Spalte basierend auf zwei Zeilen umzubenennen? Betrachtet man die Tabellen unter:
BRAND | MODEL | COMPONENT_NAME | COMPONENT_VALUE | ATTRIBUTE_NAME | ATTRIBUTE_VALUE
-----------------------------------------------------------------------------------
SAMSUNG | I9100 | Chipset | Exynos | frequency | 1200
SAMSUNG | I9100 | Screen | Amoled | colors | 16M
SAMSUNG | I9100G | Chipset | TI OMAP4430 | frequency | 1200
SAMSUNG | I9100G | Screen | Amoled | colors | 16M
------------------------------------------------------------------------------------
Das wollen wir: mit der COMPONENT_NAME
oben als COMPONENT_NAME `column header for one and the
umgewandelt - ATTRIBUTE_NAME` als für einen anderen.
BRAND | MODEL | Chipset | Chipset - frequency | Screen | Screen - colors
------------------------------------------------------------------------
SAMSUNG | I9100 | Exynos | 1200 | Amoled | 16M
SAMSUNG | I9100G | TI OMAP4430 | 1200 | Amoled | 16M
------------------------------------------------------------------------
derzeit tun wir das Folgen die die zweite Tabelle zu erzeugen:
SELECT DISTINCT BRAND, MODEL,
MAX(CASE WHEN (COMPONENT_NAME = 'Chipset') THEN
COMPONENT_VALUE
END) AS "Chipset",
MAX(CASE WHEN (COMPONENT_NAME = 'Chipset' and ATTRIBUTE_NAME = 'frequency') THEN
ATTRIBUTE_VALUE
END) AS "Screen",
MAX(CASE WHEN (COMPONENT_NAME = 'Screen') THEN
COMPONENT_VALUE
END) AS "Screen",
MAX(CASE WHEN (COMPONENT_NAME = 'Screen' and ATTRIBUTE_NAME = 'colors') THEN
ATTRIBUTE_VALUE
END) AS "Screen - colors" from table....etc.
Gibt es eine Möglichkeit dynamisch die Spalte zu nennen?
@GauravSoni notwendig wäre, wenn Sie nicht meine bearbeiten wie Sie es gerollt haben sollte zurück. Wie es ist, haben Sie gerade Grammatikfehler und unnötige In-line-Tags wieder eingeführt und nützliche Tags entfernt? – Ben
@ben: Sorry dafür, eigentlich habe ich dein Editierteil nicht gesehen, vielleicht war ich bei der Bearbeitung mit deiner Bearbeitung beschäftigt. Du kannst meine Änderungen rückgängig machen. Sorry für die Unannehmlichkeiten nochmal. –