[英]rank over partition
我總共有3張桌子。 一個表被稱為CONTACTINFO
與CNTCT_ID
作為主要指標。
第二個表是CONTACTMAP
,它將客戶( CUSTNUM
)鏈接到所有contactinfo(詳細信息,例如姓名,職位,電話號碼等)。
最終表是完整的客戶列表,其中一列包含所有客戶的循環列表。
我下面的代碼回退了custnum
84574的最新條目。但是我需要它回退完整客戶列表custlist
所有custnum
結果。
select
A. CUST_TYPE
,A.CINSERT_DT
,A.CNTCT_ID
from CONTACTINFO a
JOIN CONTACTMAP B
ON A.CNTCT_ID = B.CNTCT_ID
where b. CUSTNUM in (‘84574’)
and A. CUST_TYPE in (‘PAYER’)
qualify rank() over (partition by a. CUST_TYPE order by A. CINSERT_DT desc) = 1
這是我的表格CONTACTINFO TABLE
CNTCT_ID CUST_TYPE
1 PAYER
2 OWNER
3 BUYER
CONTACTMAP Table
CNTCT_ID CUSTNUM
1 84574
2 99457
3 54187
TABLE3
CUSTNUM
84574
99457
54187
只需在CUSTNUM上加入表#3,然后將PARTITION BY更改為CUSTNUM,而不是CUST_TYPE:
select
A. CUST_TYPE
,A.CINSERT_DT
,A.CNTCT_ID
from CONTACTINFO a
JOIN CONTACTMAP B
ON A.CNTCT_ID = B.CNTCT_ID
JOIN custlist as c
ON b.CUSTNUM = c. CUSTNUM
--maybe remove the condition and add CUST_TYPE to PARTITION BY if you want one row per type
where A.CUST_TYPE in (‘PAYER’)
qualify
rank()
over (partition by c.CUSTNUM
order by CINSERT_DT desc) = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.