tsql 将列合并到一张表中
Posted
技术标签:
【中文标题】tsql 将列合并到一张表中【英文标题】:tsql merge columns into one table 【发布时间】:2012-03-30 09:26:34 【问题描述】:如何将列合并到一张表中?
声明@map_old 表(ID int 不为空) 插入@map_old 选择 1 插入@map_old 选择 2 声明@map_new 表(ID int 不为空) 插入@map_new 选择 11 插入@map_new 选择 22 声明@map(ID int not null,ID2 int not null)@map 中的结果应该是:
ID ID2 1 11 2 22有什么建议吗?谢谢!
【问题讨论】:
为什么是1 11
而不是1 22
?您需要并排“粘贴”表格吗?
我需要每一行与第二个表的关系......每个表都有相同的行数。
【参考方案1】:
您可以在表格中使用身份,如下所示:
declare @map_old table(iden int identity,ID int not null)
insert into @map_old select 1
insert into @map_old select 2
declare @map_new table(iden int identity,ID int not null)
insert into @map_new select 11
insert into @map_new select 22
declare @map table(ID int not null, ID2 int not null)
insert into @map
select t.ID, t2.ID from @map_old t join @map_new t2 on t.iden = t2.iden
【讨论】:
【参考方案2】:如果您确定这些表的行数相同。
然后可能是这样的:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY ID) AS RowNbr,
mapNew.ID
FROM
@map_new AS mapNew
),CTE2
AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY ID) AS RowNbr,
mapOld.ID
FROM
@map_old AS mapOld
)
INSERT INTO @map(ID,ID2)
SELECT
CTE.ID,
CTE2.ID
FROM
CTE
JOIN CTE2
ON CTE.RowNbr=CTE2.RowNbr
SELECT * FROM @map
【讨论】:
以上是关于tsql 将列合并到一张表中的主要内容,如果未能解决你的问题,请参考以下文章