Sql 需要在详细信息表中查找具有不同详细信息的Id

Sql 需要在详细信息表中查找具有不同详细信息的Id,sql,sql-server,Sql,Sql Server,这是我的现金表: “CASH_MAIN”表有两列,如下所示: CASHID Amount 7 1000 9 300 死亡人数将在“现金详情”表中: 我正在尝试获取在明细表中链接了多个agentid的cashid: cashid 7 在这个示例中,cashid:7有多个代理id,总计为1000 但我们不应该选择cashid:9,因为它只有一个agentid,而只有300个 我正在尝试使用下面的查询,但无法获取正确的结果: WITH Duplic

这是我的现金表:

“CASH_MAIN”表有两列,如下所示:

CASHID   Amount
7          1000
9          300
死亡人数将在“现金详情”表中:

我正在尝试获取在明细表中链接了多个agentid的cashid:

cashid     
7
在这个示例中,cashid:7有多个代理id,总计为1000 但我们不应该选择cashid:9,因为它只有一个agentid,而只有300个

我正在尝试使用下面的查询,但无法获取正确的结果:

WITH Duplicateaccounts
AS (
    SELECT CASHID 
        ,count(*) AS rcount
    FROM cash_detail 
    GROUP BY CASHID 
    HAVING count(*) > 1
    )
SELECT CASHID 
 FROM cash_detail  a
JOIN cash_MAIN b ON b.CASHID = a.CASHID 
ORDER BY a.cashid

您可以使用
分组依据
拥有

select cd.cashID
from cash_detail cd
group by cd.cashID
having min(agentid) <> max(agentid);
选择cd.cashID
来自现金详细信息cd
按cd.cashID分组
具有最小(agentid)和最大(agentid);
COUNT(DISTINCT)可用于识别特定字段中存在不同值的位置

SELECT cash_detail.cashID
FROM cash_detail 
GROUP BY cash_detail.cashID
HAVING COUNT(DISTINCT cash_detail.agentid)>1;

戈登,我见过你和其他人多次给出这种回答,这总是让我想知道,你为什么总是使用
?我是说,
@RacilHilan。这很有趣。在我的情况下,这只是为了防止我先键入
max()
。哦,这是我手上的神经,所以他们会自动切换到
,不涉及大脑:P(当然只是开玩笑)。
SELECT cash_detail.cashID
FROM cash_detail 
GROUP BY cash_detail.cashID
HAVING COUNT(DISTINCT cash_detail.agentid)>1;