Ich habe eine Tabelle von Elementen, durch ihre eindeutige ID identifiziert, zusammen mit einigen Eigenschaften.Wählen Sie mit dem Wert einer Spalte
die Tabelle lesbar zu halten, wird die Eigenschaft immer in der Spalte ‚prop_value‘ gespeichert und seine Art ist in der Spalte ‚prop_type‘
Zur Vereinfachung gespeichert, ich habe nur drei Eigenschaften verwendet habe, in der Tat, gibt es 12.
+----+-------------+-------------+
+ ID + prop_type + prop_value +
+----+-------------+-------------+
+ 1 + prop1 + foo +
+----+-------------+-------------+
+ 1 + prop3 + toto +
+----+-------------+-------------+
+ 3 + prop2 + lorem +
+----+-------------+-------------+
Ziel alle Eigenschaften für ein Element in einer sigle Reihe zu bekommen ist, ein Ergebnis, wie zum Beispiel:
+----+-------------+-------------+-------------+
+ ID + prop1 + prop2 + prop3 +
+----+-------------+-------------+-------------+
+ 1 + foo + NULL + toto +
+----+-------------+-------------+-------------+
+ 2 + NULL + lorem + NULL +
+----+-------------+-------------+-------------+
Am Anfang habe ich eine sehr hässliche Lösung:
select prop1 from myTable where id = 1
select prop2 from myTable where id = 1
...
Nun, da ich dies bis an Skalierung, es nimmt immer, und ich möchte es in einer Abfrage machen.
Ich habe so etwas wie versucht:
select a.prop_value, b.prop_value, c.prop_value from myTable a FULL JOIN myTable b FULL JOIN myTable c ...
Aber es fühlt sich an wie ich werde mich in etwas Art und Weise komplizierter, als es sein muss.
Gibt es eine kompakte Lösung, um dies zu erreichen? Danke für Ihre Hilfe.
Geben Sie bitte immer Ihre Oracle-Version (wie 11.1, 11.2, etc.) - wenn Sie nicht wissen, laufen 'select * from v $ version'. Das ist in den meisten Fällen wichtig. In diesem Fall: Wenn Ihre Version 11.1 oder höher ist, können Sie den Operator "pivot" verwenden. In früheren Versionen kann man immer "manuell" schwenken, Ollie hat das schon in seiner/ihrer Antwort gezeigt. – mathguy
Es ist noch komplizierter als das, es ist eine benutzerdefinierte Integration einer Oracle-Datenbank von einem Industrie-Software-Anbieter (AspenTech's SQLPlus) – Maxime