Databases Reference
In-Depth Information
16
Die Bestellhistorie
Wir werden eine Bestellhistorie von Kunden mit mehr als einer Bestellung in Tabellenform
erstellen. Für jeden Kunden werden die Bestellungen nach Bestelldatum geordnet unterein-
ander geschrieben, sodass wir diese Bestellungen zueinander in Beziehung setzen können.
Die einzelnen Bestellungen erhalten eine laufende Nummer zur Kennzeichnung der ersten,
zweiten, dritten bis zur x-ten Bestellung.
16.1■Row_Number over Partition
Wir nutzen die ROW_NUMBER , eine Nummer, die jede Datenbank automatisch für jede Zeile
vergibt. Diese ROW_NUMBER werden wir aber nicht komplett fortlaufend vergeben, sondern
für jede Partition erneut von vorne beginnend.
Die Syntax sieht wie folgt aus.
ROW_NUMBER() OVER (PARTITION BY <Spaltenname> order by <Spaltenname>)
Dieser Befehl gibt die fortlaufende Nummer einer Zeile innerhalb einer Partition eines
Resultsets zurück, beginnend mit 1 für die erste Zeile in jeder Partition.
Wir verwenden als erstes einen Select mit den Daten der Gesamtkunden (siehe Kapitel 13,
„Gesamtkunden“). Diese Abfrage verbinden wir mit der neuen Tabelle customer_value .
Wir wählen nur die Kunden aus, die mehr als eine Bestellung getätigt haben.
Die laufende Nummer für die Bestellungen pro Kunde vergeben wir mit folgendem Befehl:
SELECT row_number() over (partition by bd.riskID order by bd.Datum)
as lfdNr
HINWEIS: Eine ROW_NUMBER wird als laufende Nummer ausgegeben, die
Partition erfolgt über die riskID (= Kundennummer), geordnet nach dem
Datum. Somit steht das älteste Datum an erster und das jüngste Datum an
letzter Stelle.
 
Search WWH ::




Custom Search