Teradata - 按产品的数量分组Teradata的最新购买日期

时间:2017-12-01 04:31:50

标签: sql teradata

我是Teradata的新手,任何人都可以通过以下查询帮助我。

我有一个包含数百万条记录的自定义表格,如下所示:

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

基本上,我需要按产品的最新购买日期对金额进行分组。我需要的列是Cust_id,Cust_name,date,Product和amount。

需要如下结果集:

enter image description here

请帮助我。

提前致谢!

1 个答案:

答案 0 :(得分:3)

您可以使用聚合以及qualifyrank来获得所需的结果。

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;

<强>结果:

enter image description here

P.S。目前尚不清楚为什么样本期望输出中缺少标识为601的记录