Sql 包括具有COUNT DISTINCT查询的其他列

Sql 包括具有COUNT DISTINCT查询的其他列,sql,count,distinct,Sql,Count,Distinct,我有一个表,有以下列:净额结算池、交易对手和账户。我的目标是运行一个SQL查询,以显示何时存在具有多个交易对手的净额结算池,并显示与这些交易对手关联的帐户 例如: Netting_Pool Counterparty Account 1 ----- A ----- ASD 1 ----- A ----- XYZ 1 ----- B ----- DEF 2 ----- C -----

我有一个表,有以下列:净额结算池、交易对手和账户。我的目标是运行一个SQL查询,以显示何时存在具有多个交易对手的净额结算池,并显示与这些交易对手关联的帐户

例如:

Netting_Pool   Counterparty   Account  

        1   -----  A -----   ASD
        1   -----  A -----   XYZ
        1   -----  B -----   DEF
        2   -----  C -----   YUI
        3   -----  D -----   TRE
        4   -----  E -----   DDW
        5   -----  F -----   QWE
我希望查询具有以下返回:

        1   -----  A   -----  ASD
        1   -----  A   -----  XYZ
        1   -----  B   -----  DEF
到目前为止,我最接近的是:

SELECT netting_pool, count (distinct counterparty)  
FROM Table  
GROUP BY netting_pool  
HAVING count(distinct counterparty) > 1' 
返回:

Netting_Pool, Count (distinct Counterparty)  

1             2

我无法将交易对手或账户值合并到我的查询中,并让它生成我想要的结果。任何帮助都将不胜感激

您的查询正在聚合,因此您只能得到一行。另一种方法是使用窗口/分析函数,大多数但并非所有数据库都支持这些函数

遗憾的是,countdistinct通常不支持作为窗口函数。但您可以通过查看最大值和最小值来解决此问题:

select Netting_Pool, Counterparty, Account
from (select t.*,
             min(account) over (partition by Netting_Pool) as mina,
             max(account) over (partition by Netting_Pool) as maxa
      from table t
     ) t
where mina <> maxa;

添加您的DB标签:mysql、sql server、其他?您在使用Oracle吗?我相信我在使用Oracle。