我有一个tblA,我有几千个客户。我正在尝试编写一个查询,向我显示具有多个特定类型记录的客户端。这就是我的表格。
ClientID TypeB
123 1
145 1
123 2
199 1
199 2
145 2
123 1
所以你可以在这里看到(这不是一个完整的表,但这只是相关的)。每个客户端应该只有一个TypeB = 1和TypeB = 2的记录。然而,一些客户端(123)具有多于一个TypeB = 1的记录。我正在尝试查找具有多个Type = 1记录的所有客户端。
期望的最终结果:
ClientID TypeB
123 1
123 1
这就是我一直在努力做的事情
select distinct(clientid), TypeB
from tblA
where TypeB=1
having count(TypeB)>1
group by clientid
答案 0 :(得分:1)
尝试使用
SELECT a.clientid,
a.typeb
FROM tblA a
WHERE (SELECT Count(*)
FROM tblA b
WHERE b.clientid = a.clientid
AND b.typeb = 1) > 1
答案 1 :(得分:1)
看看它是否在sql server中运行:
select *
from client
qualify sum()over(partition by clientId, typeB)>1
其他简单的方法是
select *
from client
where clientId in
(select clientId
from client
having count(*)>1)
答案 2 :(得分:1)
你可以试试这个
;with cte as (
select clientid, typeb, row_number() over(partition by clientid, typeb order by clientid) as rn
from yourtable ) select clientid, typeb from cte where rn > 1
答案 3 :(得分:1)
我认为你需要这样的东西
SELECT COUNT(ClientID), ClientID, TypeB
FROM tblA
WHERE TypeB = 1
GROUP BY ClientID, TypeB
HAVING COUNT(ClientID) > 1