选择具有不同列的重复行

时间:2015-08-24 10:01:07

标签: sql duplicates unique

我需要帮助编写一个查询,该查询将返回包含重复值(AccountID)的行,但仅限于行包含唯一或不同的列值(AgentID),例如:

代理人表:

AgentID - AccountID
2         ABCD
1         AI00
3         ABCD
4         BI00
5         ABCD
5         ABCD  

结果:

Account   Count(*)
ABCD      2      

(最后两行被忽略,因为AgentID不是唯一的。)

感谢,你。

2 个答案:

答案 0 :(得分:0)

我猜您正在寻找此查询:

SELECT AgentID, AccountID
FROM dbo.Agents a
WHERE EXISTS
(
    SELECT 1 FROM dbo.Agents a2
    WHERE a.AccountID = a2.AccountID
    AND   a.AgentID <> a2.AgentID
)
GROUP BY AgentID, AccountID
HAVING COUNT(*) = 1

Demo

它返回包含重复AccountID的所有行,但AgentIDAccountID的组合是唯一的。在您的示例中,它是:

AgentID      AccountID
2            ABCD
3            ABCD

因此,即使它具有相同的重复AccountID,它也会省略最后两行,因为它们具有相同的AgentID

答案 1 :(得分:0)

我认为这是两个聚合。第一个是AccountId / AccountId级别,以获得唯一对。第二个是select AccountId, count(*) from (select AgentId, AccountId from agents group by AgentId, AccountId having count(*) = 1 ) aa group by AccountId having count(*) > 1; 级别,以获取给定帐户的编号:

 script.js

 for(var i=1; i<suggestionList.length; i++)
            {
                $list.append("<li>" + suggestionList[i] + "</li>");
                // attach handler for click on the suggestions
                $list.find("li").eq(i).click(function() {
                    change(suggestionList[0], suggestionList[i]);
                });
            }


    function change(changeto,changewith)
        {
            var replaceto=document.getElementById(changeto).innerHTML;
            var replacewith=changewith;
            var text1=document.getElementById("para").innerHTML;
            var afterRe=text1.replace(replaceto,replacewith);
            document.getElementById("para").innerHTML=afterRe;
        }