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 将列合并到一张表中的主要内容,如果未能解决你的问题,请参考以下文章

将多张 Excel 表格中的数据合并到一张表中

Excel 2010 Vlookup函数用法(合并多个组员反馈回来的表格 到 一张表中)

Oracle如何将多次分组求和的数据合并到一张表上?

sql合并两张表(表字段不一致)到一张新表中

Oracle查询一张表插入另一张表中

SQL多张表如何合并成一张报表?