Редактирование с максимальным количеством комментариев
Вот один из способов сделать это ..
Сначала я оцениваю записи по цвету с самым низким идентификатором с rnk = 1, следующий с rnk = 2.
После этого я объединяю таблицы, собирая записи rnk = 1 и затем соединяясь с rnk = 2.
declare @test table (ID numeric, Color varchar(20))
insert into @test values
(1,'Blue'),(2,'Red'),(3,'Blue'),(4,'Yellow'),(5,'Blue'),(6,'Red'),(7,'Blue')
;with data
as (select row_number() over(partition by color order by id asc) as rnk
,color
,id
from @test
)
select a.id,a.color,b.id,b.color
from data a
join data b
on a.Color=b.Color
and b.rnk=a.rnk+1
where a.rnk%2=1
я получаю вывод выглядит следующим образом
+----+-------+----+-------+
| id | color | id | color |
+----+-------+----+-------+
| 1 | Blue | 3 | Blue |
| 5 | Blue | 7 | Blue |
| 2 | Red | 6 | Red |
+----+-------+----+-------+