[英]SQL query to fetch id having multiple coaches
Id name type
-------------------
1 A coach
1 B coach
1 C client
1 D client
2 E coach
2 F client
2 G client
我想编写一个查询来查找不止一次具有 coach 的 ID,但是 output 应该包含具有 client 值的行,而不管其计数如何。
我尝试使用子查询,但无法获得所需的结果。
尝试了子查询,还尝试将值指定为教练,但在那种情况下没有获得具有客户端值的行。
如果有的话,我想要 id 和客户一起有不止一次的教练
条件sum() over()
可能很适合这里。
例子
Declare @YourTable Table ([Id] int,[name] varchar(50),[type] varchar(50))
Insert Into @YourTable Values
(1,'A','coach')
,(1,'B','coach')
,(1,'C','client')
,(1,'D','client')
,(2,'E','coach')
,(2,'F','client')
,(2,'G','client')
;with cte as (
Select *
,Coaches = sum( case when [type]='Coach' then 1 end) over (partition by ID)
From @YourTable
)
Select * from cte where Coaches>1
结果
Id name type Coaches
1 A coach 2
1 B coach 2
1 C client 2
1 D client 2
或者另一种方法
Select A.*
From @YourTable A
Join ( Select id from @YourTable where [type]='Coach' group by id having count(*)>1 ) B
on A.ID=B.ID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.