Oracle SQL - Konvertieren N Zeilen' Spalte Werte um N Spalten in Zeile 1
Den trick mit dieser im Vergleich zu den anderen Fragen (z.B. "Oracle konvertieren von Zeilen in Spalten") ist, dass meine Spalte Werte sind beliebige Zeichenfolgen, sondern als etwas, das ich benutzen kann mit decode. Nehmen Sie diese Abfrage:
Beschreibung Tabelle hier Karten die Namen von Personen auf Beschreibungen, aber jede person kann mehrere Beschreibungen wie z.B. "trägt einen Hut" oder "hoch".
Select firstName, lastName,
(Select description from descriptions --This can return any number of rows (0 or more)
where description.firstName = people.firstName
and description.lastName = people.lastName
and rownum <= 3)
from people
where age >= 25;
Möchte ich eine Ausgabe wie diese:
FIRSTNAME LASTNAME DESCRIPTION1 DESCRIPTION2 DESCRIPTION3
Jeremy Smith Tall Confused (null)
Anne Smith (Null) (Null) (Null)
Mark Davis Short Smart Strong
Im Falle von weniger als 3 Beschreibungen, ich will null-Werte gibt. Im Falle von mehr als 3 Beschreibungen, ich will nur lassen Sie sich.
Ich bin mit Oracle 11.1. Kann das sein getan effizient?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, dass Sie nicht um das, was um die Beschreibungen werden zurückgegeben (d.h. Jeremy Smith konnte ebenso richtig haben
Description1
oder "Verwirrt" und einDescription2
von "Groß"), die Sie gerade brauchen, um schwenken auf die Nummer der Zeile. Wenn Sie sich sorgen über die Reihenfolge der Beschreibungen zurückgegeben werden, können Sie eineORDER BY
- Klausel, um die Fenster-Funktion in derROW_NUMBER
analytische FunktionAls ein beiseite, ich bin der Hoffnung, dass Sie tatsächlich die Speicherung einer Geburt Datum und der Berechnung der Alter der person, anstatt zu speichern das Alter und die Annahme, dass Menschen sind die Aktualisierung Ihrer Alter jedes Jahr.
Habe ich versucht, diese option, aber es sagt, wir sollten order by-Klausel innerhalb der Zeile analytics-Funktion, wie unten gezeigt,
Es funktioniert gut für mein Szenario, wenn ich order by-Klausel.
Meinem Szenario wird Benutzer-details sind in der Tabelle A, die Gruppe, die in Tabelle C und die Zuordnung zwischen Benutzern und Benutzergruppen in Tabelle B. Einem Benutzer können mehrere Benutzergruppen. Ich brauche, um die Ergebnisse mit Benutzername mit mehreren Benutzergruppen in einer einzigen Zeile
**
- Abfrage:
**
**
Abfrage-Ergebnis
**