You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle多条件获取UNIQUE_ID:关联不同唯一ID的保单查询需求

Oracle Query to Find Cross-Unique-ID Policy Associations

我懂你的需求啦——你要找出那些跨不同UNIQUE_ID的保单关联,排除掉同一ID内部的互相配对(比如例子里1234号ID下AJ123和BH125的互相关联),只保留关联双方属于不同ID的记录。

你当前的SQL只是筛选出了所有存在关联的记录,但没区分关联双方的UNIQUE_ID是否相同,所以没法精准拿到想要的结果。咱们用**自连接(Self Join)**就能解决这个问题:

SELECT
    a.UNIQUE_ID AS UNIQUE_ID1,
    a.POLICY_NUMBER AS POLICY_NUMBER1,
    b.UNIQUE_ID AS UNIQUE_ID2,
    b.POLICY_NUMBER AS POLICY_NUMBER2
FROM
    YOUR_TABLE_NAME a
INNER JOIN
    YOUR_TABLE_NAME b 
    ON a.REFERRED_POLICY_NUMBER = b.POLICY_NUMBER
WHERE
    a.UNIQUE_ID != b.UNIQUE_ID
-- 可选:添加此条件避免重复输出同一关联对(比如A→B和B→A同时出现)
-- AND a.POLICY_NUMBER < b.POLICY_NUMBER

代码逻辑说明:

  1. 自连接设计:把表自身拆成两个逻辑表(a代表发起关联的保单,b代表被关联的保单),通过REFERRED_POLICY_NUMBER和POLICY_NUMBER匹配关联关系。
  2. 核心过滤:a.UNIQUE_ID != b.UNIQUE_ID直接排除了同一ID内部的关联记录,只保留跨ID的配对。
  3. 可选去重:如果业务里存在双向关联(比如A关联B,B也关联A),加a.POLICY_NUMBER < b.POLICY_NUMBER能让每对关联只出现一次,避免重复结果。

对应你的测试数据验证:

  • UNIQUE_ID=1234的AJ123记录,REFERRED_POLICY_NUMBER是BH125,会匹配到UNIQUE_ID=2345的BH125记录,符合a.UNIQUE_ID != b.UNIQUE_ID,输出就是你期望的结果:
    UNIQUE_ID1POLICY_NUMBER1UNIQUE_ID2POLICY_NUMBER2
    1234AJ1232345BH125
  • 而UNIQUE_ID=1234的BH125记录,关联的是同一ID下的AJ123,会被WHERE条件过滤掉,不会出现在结果里。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:50:01