簡體   English   中英

排名高於分區

[英]rank over partition

我總共有3張桌子。 一個表被稱為CONTACTINFOCNTCT_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM