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