我总共有3张桌子。一个表称为CONTACTINFO
,CNTCT_ID
作为主索引。
第二个表是CONTACTMAP
,它将客户(CUSTNUM
)链接到所有联系信息(详细信息,如姓名,职位,电话号码等)。
最终表是一个完整的客户列表,其中一列包含我们所有客户的循环列表。
下面的代码会删回custnum
84574的最新条目。但我需要在完整的客户列表custnum
中提取所有custlist
的结果。
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
答案 0 :(得分:0)
只需在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