排名高于分区
rank over partition
我总共有 3 个 table。一个table被称为CONTACTINFO
,以CNTCT_ID
作为主索引。
第二个 table 是 CONTACTMAP
,它将客户 (CUSTNUM
) 链接到所有联系信息(详细信息,例如姓名、职位、phone 号码等)。
最终 table 是一个完整的客户列表,其中一栏包含我们所有客户的循环列表。
我下面的代码提取了 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
这是我的 table
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 上加入 table #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
我总共有 3 个 table。一个table被称为CONTACTINFO
,以CNTCT_ID
作为主索引。
第二个 table 是 CONTACTMAP
,它将客户 (CUSTNUM
) 链接到所有联系信息(详细信息,例如姓名、职位、phone 号码等)。
最终 table 是一个完整的客户列表,其中一栏包含我们所有客户的循环列表。
我下面的代码提取了 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
这是我的 table
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 上加入 table #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