Declare @YourTable Table ([Name] varchar(50),[Status] varchar(50))
Insert Into @YourTable Values
('Kevin','success')
,('Mark','fail')
,('Mark','success')
,('Mike','success')
,('Yann','fail')
,('Yann','success')
,('George','fail')
,('Boi','Fail')
Select top 1 with ties *
From @YourTable
Order By min(case when status='Fail' then 0 else 1 end) over (partition by [Name] )
退货
Name Status
Boi Fail
George fail
Mark fail
Mark success
Yann fail
Yann success
2条答案
按热度按时间jmp7cifd1#
基本上我想排除刚刚成功的记录。
如果你想要所有的记录
name
至少有一个非-'success'
状态,您可以使用exists
:或者,如果你想要一个
name
至少有一个非-'success'
状态,则可以使用having
条款:cbeh67ev2#
另一个选择是使用
WITH TIES
不清楚您是要所有记录还是只需要不同的名称例子
退货
凯文和迈克被排除在外