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

求Oracle查询语句:筛选对应多个不同fund_id的account_id

Oracle 查询:筛选关联多个不同Fund_id的Account_id记录

原始数据集

假设数据存储在表account_funds中,数据如下:

account_id  Fund_id
ASC23454    765432
ASC67654    988776
ASC23454    899098
ASC23454    765787
ASC90878    899877
ASC90878    788978
ASC98765    889909
ASC09876    908990

需求

编写Oracle查询语句,仅保留那些关联了多个不同Fund_id的Account_id,同时输出这些Account_id对应的所有关联Fund_id记录。

解决方案

方法1:使用窗口函数(推荐)

窗口函数可直接在数据行上计算每个Account_id关联的不同Fund_id数量,再筛选符合条件的记录:

SELECT account_id, fund_id
FROM (
    SELECT 
        account_id, 
        fund_id,
        COUNT(DISTINCT fund_id) OVER (PARTITION BY account_id) AS distinct_fund_count
    FROM account_funds
)
WHERE distinct_fund_count > 1
ORDER BY account_id, fund_id;

方法2:使用子查询分组筛选

先通过分组查询找出符合条件的Account_id,再关联原表获取对应记录:

SELECT af.account_id, af.fund_id
FROM account_funds af
INNER JOIN (
    SELECT account_id
    FROM account_funds
    GROUP BY account_id
    HAVING COUNT(DISTINCT fund_id) > 1
) qualified_accounts ON af.account_id = qualified_accounts.account_id
ORDER BY af.account_id, af.fund_id;

预期输出

account_id  Fund_id
ASC23454    765432
ASC23454    899098
ASC23454    765787
ASC90878    899877
ASC90878    788978 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:09:59