2017-12-01 1 views
0

Ich bin neu in Teradata, kann mir jemand mit unten Abfrage helfen.Teradata - Group die Menge nach Produkt mit dem spätesten Kaufdatum in Teradata

Ich habe eine benutzerdefinierte Tabelle mit Millionen von Datensätzen wie unten angegeben:

Custid Custname bill_no date  product amount 5 A 201 11/12/2017 Tee 1100 5 A 301 11/12/2017 Shirt 1200 5 A 401 11/12/2017 Tee 1050 809 B 501 10/14/2017 Tee 230 809 B 601 10/14/2017 Shirt 580 809 B 701 10/14/2017 Short 950 809 B 801 10/14/2017 Shirt 340 809 B 901 10/14/2017 Tee 290 601 c 1001 11/18/2017 Shirt 1040 601 c 1101 11/18/2017 Tee 690 601 c 1201 11/18/2017 Short 250 601 c 1301 11/18/2017 Short 890 5 A  201  10/18/2017  Tee 2850 5 A 301  10/18/2017 Shirt 1700

Grundsätzlich, ich brauche die Menge von Produkt mit der neuesten Kaufdatum Gruppe. Die Spalten, die ich brauche, sind Cust_id, Cust_name, date, Product und betrag.

Sie möchten die wie unten gesetzt Ergebnis:

enter image description here

Bitte helfen Sie mir mit diesem.

Vielen Dank im Voraus!

+0

Warum sind Datensätze mit der ID '601' nicht in der gewünschten Ausgabe enthalten – zarruq

Antwort

3

Sie können die Aggregation zusammen mit qualify und rank verwenden, um das gewünschte Ergebnis zu erhalten.

select Custid, custname, Date1, product, sum(amount) as amount 
from table1 
group by custid, custname, product, date1 
qualify rank() over(partition by custid, custname order by date1 desc) = 1 
order by custname asc, date1 desc; 

Ergebnis:

enter image description here

P. S. Es ist nicht klar, warum Datensätze mit der ID 601 in der von Ihnen gewünschten Beispielausgabe fehlen.