繁体   English   中英

SQL 查询以获取具有多个教练的 id

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM