Ich habe ein Protokoll der Käufe von Kunden gemacht. Manchmal kauft ein Kunde während eines Kaufs mehrere Artikel, manchmal kauft er nur einen Artikel. Was ich Zeile für Zeile machen möchte, ist, welche Kaufereignisse stattgefunden haben (d. H. Nicht auf einer Einzelposten-Basis, sondern auf einer Kauf-Kasse-Basis).Anzahl der eindeutigen Kaufdaten
Jede Zeile der Quelldatenbank enthält die folgenden Felder
cust_id, purchase_date, sku
So ein Kunde, der drei Gegenstände bei einer bestimmten Transaktion kauft wie diese
1, 01/01/01, dog1
1, 01/01/01, cat1
1, 01/01/01, mouse1
1, 01/02/01, wolf1
1, 01/03/01, lion1
aussehen würde, was ich will heraus
cust_id, purchase_date, sku, item_purchase_number_within_purchase, unique_purchase_date_across_dates
Und das würde wie
aussehen Kauf1, 01/01/01, dog1, 1, 1
1, 01/01/01, cat1, 2, 1
1, 01/01/01, mouse1, 3, 1
1, 01/02/01, wolf1, 1, 2
1, 01/03/01, lion1, 1, 3
In Worten, am ersten Tag, in die drei Elemente als Kauf Zahlen willkürlich identifiziert gekauft, 1, 2 und 3 auf dem zweiten Kaufdatum (2. Januar 2001), waren nur ein einzelne Element, Dies war jedoch das zweite Kaufereignis, und am dritten Kaufdatum (3. Januar 2001) wurde ein weiterer einzelner Artikel gekauft.
Ich versuche dies in oracle10g zu tun. Ich bin mir nicht sicher, wie ich beschreiben soll, was ich beende.
Dies ist die SQL-I
SELECT cust_id, PURCHASE_DATE, sku so weit haben, ROW_NUMBER() OVER (PARTITION BY PURCHASE_DATE ORDER BY sku) VON [Tabelle]
Dank
Warum sind die ersten drei alle gleich "Event" - Sie gehen davon aus, dass alle Käufe eines Kunden an einem bestimmten Datum ein Ereignis sind? –
Sie haben die gleiche Kundennummer und das gleiche Datum. –
Ja, der Einfachheit halber und in diesem Beispiel gehe ich davon aus, dass alle Einkäufe desselben Kunden an einem bestimmten Datum ein Ereignis sind. Es war einfacher, als einen Zeitstempel zu setzen. –