Sql 包括具有COUNT DISTINCT查询的其他列
我有一个表,有以下列:净额结算池、交易对手和账户。我的目标是运行一个SQL查询,以显示何时存在具有多个交易对手的净额结算池,并显示与这些交易对手关联的帐户 例如: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 -----
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。