Фактическая таблица имеет около 6 миллионов строк, num1 и num2 в каждой строке представляют собой числовые границы. Мне нужно преобразовать набор из двух столбцов в один столбец и применить к каждой из двух строк, которые ранее использовали одну строку. Ниже небольшой образец. Я просмотрел примеры Unpivot, но ничего не подходит мне. Может ли кто-нибудь порекомендовать правильный путь? Я понимаю, что в итоге я получу 12 миллионов строк.
Спасибо.
declare @orig table ( num1 bigint , num2 bigint , metakey tinyint )
insert into @orig
select 7216,7471 , 0
union all
select 7472,8239 , 1
union all
select 8240,9263 , 2
union all
select 9264,11311 , 3
declare @dest table ( allnum bigint , metakey tinyint )
-- Wanted result set:
/*
select * from @dest
7216 0
7471 0
7472 1
8239 1
8240 2
9263 2
9264 3
11311 3
*/
Я понимаю, что это работает для моего примера табличной переменной, но для действительно большого набора это не пахнет правильно:
insert into @dest
select num1 , metakey
from @orig
union all
select num2 , metakey
from @orig
order by 1