首页 > 解决方案 > 如何编写 SQL 脚本来查找与原始 ID 相关的所有关系?

问题描述

例如:

我想传入一个税号以查找与此税号关联的所有帐户。这只是:

SELECT TAX_ID, ACCOUNT_NUMBER FROM CUSTOMER_RECORDS

然后我会有一个所有帐户的列表。但是,每个账户也可以有其他相关的税号(共同借款人、担保人等)。因此,我想获取退回的帐户,然后找到与它们关联的所有税号。然后,我需要重复这些步骤以查找与返回的所有新税号相关联的所有帐户。

最终结果将是所有形成一个“关系”的帐户和税号列表。

我在想递归 CTE 可能适用于这种情况?但是,这比我的 SQL 技能水平高一点。我将不胜感激任何帮助。

标签: sqloraclecommon-table-expressionbanking

解决方案


请尝试以下方法:

with customer_records as
(
select 111 tax_id, 0 account_number from dual union
select 1 , 100 from dual union
select 1 , 200 from dual union
select 1 , 300 from dual union
select 1 , 400 from dual union
select 2 , 100 from dual union
select 3 , 202 from dual union
select 4 , 303 from dual union
select 5 , 400 from dual union
select 0 , 222 from dual 
)
SELECT c1.TAX_ID, c1.ACCOUNT_NUMBER 
FROM CUSTOMER_RECORDS c1
where 1=1
  and c1.tax_id = :tax_id
union
SELECT c2.TAX_ID, c2.ACCOUNT_NUMBER 
FROM CUSTOMER_RECORDS c1
, CUSTOMER_RECORDS c2
where 1=1
  and c1.tax_id = :tax_id
  and c1.tax_id <> c2.tax_id 
  and c1.account_number = c2.account_number
;

推荐阅读