我有一个包含以下列的表:Netting_Pool,Counterparty和Account。我的目标是运行SQL查询以显示何时存在具有多于1个Counterparty的Netting_Pool,并显示链接到这些Counterparties的Accounts。
一个例子:
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
我无法将Counterparty或Account值合并到我的查询中并让它产生我想要的结果。任何帮助将不胜感激!
答案 0 :(得分:1)
您的查询正在汇总,因此您只会获得一行。另一种方法是使用窗口/分析函数,大多数但不是所有数据库都支持这些函数。
不幸的是,count(distinct)
通常不支持作为窗口函数。但是你可以通过查看最大值和最小值来解决这个问题:
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;