获取特定月份放款客户按应用维度的地域信息SQL查询问题
解决重复申请客户地域信息NULL的问题
问题原因
重复申请的客户后续记录里STATE为NULL,是因为服务商只在首次申请时采集地域信息,后续申请不再重复获取。我们需要把每个客户的有效地域信息,填充到他所有的申请记录里。
修改后的SQL
方法一:用窗口函数(推荐,简洁高效)
select top 100 C.contactid, C.TSIApplicationId, FIRST_VALUE(PD.state) OVER (PARTITION BY C.ContactId ORDER BY C.CreatedOn) as STATE from [DH].[Customer] as C inner join [DH].[parsed_details] as PD on C.ContactId = PD.ContactId where C.availed = 1 and C.CreatedOnMonth = '2023-04'
这个写法用FIRST_VALUE窗口函数,按客户ID分组,按申请时间排序,把每组里第一个非空的STATE值,自动填充到该客户的所有记录中。
方法二:子查询关联(兼容更多数据库)
如果你的数据库不支持窗口函数,可以用子查询先提取每个客户的有效地域信息,再关联回去:
select top 100 C.contactid, C.TSIApplicationId, CusState.state as STATE from [DH].[Customer] as C inner join [DH].[parsed_details] as PD on C.ContactId = PD.ContactId inner join ( -- 先找出每个客户的非空STATE(同一客户只有一个有效值,max/min都可以) select ContactId, max(state) as state from [DH].[parsed_details] where state is not null group by ContactId ) CusState on C.ContactId = CusState.ContactId where C.availed = 1 and C.CreatedOnMonth = '2023-04'
效果说明
修改后,不管是首次还是重复申请的记录,都会显示该客户对应的地域信息,和你期望的输出一致。
内容的提问来源于stack exchange,提问作者user23402763
相关产品推荐
相关产品推荐

