实际表大约有 600 万行,每行中的 num1 和 num2 代表数字边界。我需要将两列集转换为单列,并将 应用于先前共享单行的两行中的每一行。下面是一个小样本。我查看了 Unpivot 示例,但似乎没有什么适合我需要的。任何人都可以推荐正确的方法吗?我意识到我最终会得到 1200 万行。
谢谢。
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