--Создание таблицы и индекса
create table test_gr (Col1 integer, Col2 integer, Per integer);
create index ind_1 on test_gr (col1,per);




--Заполнение таблицы (примерно 1 час)
DECLARE @counter INT;
BEGIN TRAN
SET @counter = 0;
insert into test_gr(col1,col2,Per) values(11111,round(rand()*100000,0),round(rand()*100,0));
WHILE @counter<100000000
BEGIN
    insert into test_gr(col1,col2,Per) values(round(rand()*100000,0),round(rand()*100000,0),round(rand()*100,0)); 
    SET @counter = @counter + 1;  
END;
COMMIT

--Создание и заполнение таблицы фильтра
create table #Cols (col integer);
insert into #Cols values(11111); --Реальное значение


--пример работы аналога СрезПоследних (с условием и без) для 3 таблиц во вложении (включено/отключено условие фильтра)
select T1.col1,T1.col2
from 
(select t6.col1,t6.col2
from (select t3.col1,t3.maxperiod,MAX(t5.col2) as maxcol2
from (select t4.col1,max(t4.per) as maxperiod
from test_gr t4
--where exists(select 1 from #Cols t7 where T7.col = T4.col1) 
group by t4.col1) t3
inner join test_gr t5
on t3.col1 = t5.col1 and t3.maxperiod = t5.per
group by t3.col1,
t3.maxperiod) T2 
inner join test_gr T6
on T2.col1 = T6.col1 and T2.maxperiod = T6.per and T2.maxcol2 = T6.col2
) T1
where exists(select 1 from #Cols t7 where T7.col = T1.col1) 
