По пониманию,
create table #t (Id int,Value varchar(1));
insert into #t values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'f'),(7,'g'),(8,'h'),(9,'i'),(10,'j'),(11,'k'),(12,'l'),(13,'m'),(14,'n'),(15,'o'),(16,'p');
select ot.Id1 '1', ot.Id2 '2', thf.Id3 '3', thf.Id4 '4'
from(
select * from(
select Id Id1, Value Value1 from #t
)o
join (
select Id Id2, Value Value2 from #t
)t
on o.Id1 = t.Id2 - 4
)ot
join(
select * from(
select Id Id3, Value Value3 from #t
)th
join (
select Id Id4, Value Value4 from #t
)f
on th.Id3 = f.Id4 - 4
)thf
on ot.Id2 = thf.Id3 - 4
Здесь ваш id
столбец должен быть в столбце int. Если столбец не int, то вы можете использовать row_number()
вместо столбца id в условиях. Как,
select Id Id3, Value Value3, ROW_NUMBER() over(order by id) rn3 from #t
//join query
on th.rn3 = f.rn4 - 4
Дай мне знать, что у тебя есть ..!
Спасибо,
TamilPugal