【问题标题】:tsql merge columns into one tabletsql 将列合并到一张表中
【发布时间】:2023-03-26 12:08:01
【问题描述】:

如何将列合并到一张表中?

声明@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?您需要并排“粘贴”表格吗?
  • 我需要每一行与第二个表的关系......每个表都有相同的行数。

标签: tsql sql-server-2005


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      相关资源
      最近更新 更多