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

COUNT子查询获取不同所有者的重复账户时报错,求解决方法

问题:获取拥有不同所有者的重复账户SQL报错处理

需求:编写SQL获取所有拥有不同所有者的重复账户,当前代码第4行报错,无法得到预期结果。

预期结果

ACCOUNTSOWNERS
204060HUGO TORREZ
204060LUIS FLORES
32565963ERICK LIRA
32565963NOE PRIETO

当前错误SQL代码

SELECT issuing_account, COUNT(1)
FROM TBL_TXN
WHERE 1 = 1 group by issuing_account
HAVING COUNT(1) > 1
(SELECT DISTINCT OWNERS
                FROM TBL_TXN
            WHERE TRANSACTION_TYPE='B');

错误分析

  1. 语法错误:主查询与子查询之间缺少关联逻辑或关键字(如JOIN、IN),导致SQL解析失败。
  2. 逻辑偏差:原代码仅统计账户的出现次数,未筛选拥有不同所有者的账户;且SELECT子句输出的是账户和计数,不符合预期结果的结构。

正确解法

方法1:子查询关联筛选

先找出存在多个不同所有者的账户,再关联原表获取对应的所有者信息:

SELECT t.issuing_account AS ACCOUNTS, t.OWNERS
FROM TBL_TXN t
JOIN (
    SELECT issuing_account
    FROM TBL_TXN
    WHERE TRANSACTION_TYPE='B'
    GROUP BY issuing_account
    -- 筛选出至少有2个不同所有者的账户
    HAVING COUNT(DISTINCT OWNERS) > 1
) dup_accounts ON t.issuing_account = dup_accounts.issuing_account
WHERE t.TRANSACTION_TYPE='B'
ORDER BY t.issuing_account;

方法2:窗口函数实现

用窗口函数统计每个账户的不同所有者数量,再筛选符合条件的记录:

SELECT ACCOUNTS, OWNERS
FROM (
    SELECT 
        issuing_account AS ACCOUNTS,
        OWNERS,
        COUNT(DISTINCT OWNERS) OVER (PARTITION BY issuing_account) AS owner_count
    FROM TBL_TXN
    WHERE TRANSACTION_TYPE='B'
) temp
WHERE owner_count > 1
ORDER BY ACCOUNTS;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:22:19