Databases Reference
In-Depth Information
■
29.2■Ordnung nach der row_number
over partition
Nehmen wir einmal an, es gäbe in der Tabelle
iw_sales
keine
line_No
. Dann müssten wir
den Inhalt der einzelnen Warenkörbe mit der Funktion
row_number over partition
nach
der Artikelnummer ordnen. Diese neue Ordnung hat den großen Vorteil, dass bei identi-
schen Warenkörben die Artikel in die gleiche Reihenfolge gebracht werden. Die Zeilennum-
mer der Rechnung (
line_No
) kann in der Praxis auch einfach davon abhängen, in welcher
Reihenfolge die Artikel in den Warenkorb gelegt oder in welcher Reihenfolge die Artikel in
der Logistik verarbeitet wurden. Die Ordnung nach
row_number over partition
bietet
also klare Vorteile. Die grundsätzliche Funktion der
row_number over partition
habe ich
schon in Abschnitt 16.1, „Row_Number over Partition“, erklärt.
SELECT row_number() over (partition by s.[orderNo]
order by a.article_No) as lfdNr,
s.[orderNo], a.article_No, a.[description], a.colorDescription,
a.size, a.productGroup, s.[quantity] a.unitPrice
FROM [dbo].[iw_sales]s, [dbo].[iw_article]a
where s.[type] = 2
and s.orderDate between '01.05.2011'and '31.05.2011'
and s.IWAN = a.IWAN
order by s.orderNo
Bild 29.5 zeigt die Ergebnisse, wenn Sie diesen Select durchführen.
Bild 29.5■
Laufende Nummer anstatt Line-Nummer