Вы можете просто сгруппировать по 2 столбцам, на которые вы фокусируетесь, и затем взять максимум (last_date).Подзапрос, который вы использовали ранее, не ограничивал бы max (last_date), так как несколько комбинаций user_id и item_id могут применяться к одной и той же дате.
Ниже приведена запись с вашими примерами данных, которая дает ожидаемый результат безнаписать дополнительный вложенный запрос.
declare @t table (
user_id nvarchar(15),
item_id int,
last_date datetime2,
type_id nvarchar(3)
);
insert into @t (user_id, item_id, last_date, type_id)
values
('129678', 2, '2019-02-17 11:00:09', 'foo'),
('129678', 1, '2019-02-17 11:00:15', 'foo'),
('129678', 2, '2019-02-17 11:00:10', 'bar'),
('129678', 2, '2019-02-17 11:00:10', 'bar'),
('129678', 2, '2019-02-17 11:00:11', 'foo'),
('129678', 2, '2019-02-17 11:00:15', 'foo'),
('129678', 1, '2019-02-17 11:00:09', 'foo'),
('129678', 2, '2019-02-17 11:00:14', 'bar'),
('129678', 2, '2019-02-17 11:00:08', 'bar'),
('129678', 2, '2019-02-17 11:00:11', 'foo'),
('129678', 2, '2019-02-17 11:00:14', 'bar'),
('129678', 2, '2019-02-17 11:00:10', 'foo'),
('12a0d8', 3, '2019-02-17 11:00:08', 'foo'),
('12a0d8', 2, '2019-02-17 11:00:12', 'foo'),
('12a0d8', 3, '2019-02-17 11:00:08', 'bar'),
('12a0d8', 3, '2019-02-17 11:00:12', 'bar'),
('12a0d8', 1, '2019-02-17 11:00:10', 'foo'),
('12a0d8', 1, '2019-02-17 11:00:11', 'bar'),
('12a0d8', 3, '2019-02-17 11:00:14', 'foo'),
('12a0d8', 3, '2019-02-17 11:00:12', 'foo'),
('18ae98', 2, '2019-02-17 11:00:12', 'foo'),
('18ae98', 3, '2019-02-17 11:00:07', 'bar'),
('18ae98', 1, '2019-02-17 11:00:13', 'bar'),
('18ae98', 1, '2019-02-17 11:00:14', 'foo'),
('18ae98', 2, '2019-02-17 11:00:09', 'foo'),
('18ae98', 2, '2019-02-17 11:00:13', 'foo'),
('18ae98', 3, '2019-02-17 11:00:08', 'foo'),
('18ae98', 1, '2019-02-17 11:00:12', 'foo'),
('18ae98', 3, '2019-02-17 11:00:10', 'foo'),
('18ae98', 1, '2019-02-17 11:00:12', 'foo');
select * from (
select USER_ID, item_id, MAX(last_date) as last_date, type_id
from @t where type_id = 'foo' group by user_id, item_id, type_id
) x
order by user_id, item_id;