2017-12-01 6 views
0

Teradata를 처음 사용했기 때문에 누구든지 아래 쿼리로 도움을받을 수 있습니다.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, 날짜, 제품 및 금액입니다.

enter image description here

이 좀 도와주십시오

는 다음과 같이 설정 결과이 필요합니다.

미리 감사드립니다.

+0

원하는 출력에 601이라는 레코드가 포함되지 않은 이유는 무엇입니까? – zarruq

답변

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. id가 601 인 레코드가 원하는 샘플 출력에서 ​​누락 된 이유는 분명하지 않습니다.