如何筛选多成员家庭中持有CHK账户的Individual_ID
问题分析与解决方案
原查询的问题
你使用的ROW_NUMBER()窗口函数会给每个家庭内的记录分配唯一序号,筛选Acct_Per_Household > 1会排除每个家庭的第一条记录(比如HH_101的101号个体),但你的需求是保留所有属于多成员家庭的CHK账户,不管它是家庭里的第几个成员。
正确的查询写法
应该使用COUNT()窗口函数统计每个家庭的总成员数,再筛选出总成员数大于1且账户类型为CHK的记录:
WITH cte AS ( SELECT Individual_ID, Household_ID, AccountType, COUNT(*) OVER (PARTITION BY Household_ID) AS Total_Members_Per_Household FROM [Test].[dbo].[AccountsInfo] ) SELECT Individual_ID, Household_ID, AccountType FROM cte WHERE Total_Members_Per_Household > 1 AND AccountType = 'CHK';
执行结果
该查询会输出符合预期的结果:
Individual_ID Household_ID AccountType ------------------------------------------- 101 HH_101 CHK 103 HH_101 CHK 107 HH_104 CHK 110 HH_106 CHK
内容的提问来源于stack exchange,提问作者Vivek Kumar Singh
相关产品推荐
相关产品推荐

