Не уверен, что я понимаю, что вы хотите, чтобы ваш запрос вернул, но в любом случае.Этот запрос даст вам пользователей в группе, которая активна в последней записи.Он использует row_number () , поэтому вам нужен как минимум SQL Server 2005.
Определение таблицы:
create table YourTable
(
ID int identity primary key,
UserID int,
Active bit,
GroupID int
)
Индекс для поддержки запроса:
create index IX_YourTable_GroupID on YourTable(GroupID) include(UserID, Active)
Пример данных:
insert into YourTable values
(1, 0, 10),
(1, 0, 10),
(1, 0, 10),
(1, 1, 10),
(2, 0, 10),
(2, 1, 10),
(2, 0, 10),
(3, 1, 10)
Запрос:
declare @GroupID int = 10
;with C as
(
select UserID,
Active,
row_number() over(partition by UserID order by ID desc) as rn
from YourTable as T
where T.GroupID = @GroupID
)
select UserID
from C
where rn = 1 and
Active = 1
Результат:
UserID
-----------
1
3