Ich habe eine Tabelle in einer Oracle 11g-Datenbank, die wie folgt aussieht:Oracle-Gruppe durch und Pivot
ownerid | propertyid | name
--------------------------------------
1 | 1000001 | SMITH MARY
2 | 1000001 | SMITH JOHN
3 | 1000002 | HUGHES JANE
4 | 1000003 | CHEN ALICE
5 | 1000003 | MCCOY ELLIS
Ich versuche, in der Tabelle auf propertyid
und schwenken die Zeilen zu Spalten zu gruppieren, so dass es so aussieht, dies:
propertyid | owner1 | owner2
---------------------------------------------
10001 | SMITH MARY | SMITH JOHN
10002 | HUGHES JANE | <null>
10003 | CHEN ALICE | MCCOY ELLIS
Jede Eigenschaft kann zwischen 1 und 3-Besitzer haben, aber ich bin daran interessiert sind nur in den ersten beiden, wie sie erscheinen, wenn sie auf ownerid
bestellt.
Meine beste Lösung war, zwei Unterabfragen zu erstellen: einen der "ersten" Besitzer und einen weiteren "zweiten" Besitzer. Ich benutzte die nth_value
Funktion wie folgt:
-- first owners
select
propertyid,
nth_value(name, 1) over (partition by propertyid order by ownerid) as owner_1
from owners
Aber das gibt mir zu duplizieren (obwohl korrekt) Paare von Eigenschaften und Eigentümer, wenn die Gesamtzahl der Besitzer von mehr als 1. Im Allgemeinen ist Ich mag es fühlen muss besser sein Art und Weise dies zu tun. Hat jemand irgendwelche Ideen?
Das hat gut funktioniert, und ich mag die 'Eingänge' =>' prep' => Arbeitsmuster. Obwohl ich zugeben muss, dass ich diese Leute eine Zeit lang googelte und dachte, dass sie echte Oracle-Funktionen waren :) Danke! – Rob
lol Ich hoffe, du hast die richtige Antwort gefunden (WITH-Klausel, CTE, Unterabfrage-Factoring ...) Ich habe es früh gelernt und benutze es jetzt immer, es macht Abfragen leichter zu lesen/zu folgen. Froh, dass es geholfen hat. Prost! – mathguy