gpt4 book ai didi

sql - 通过将表列映射到其他表的列值来重命名表列

转载 作者:搜寻专家 更新时间:2023-10-30 23:26:18 26 4
gpt4 key购买 nike

我有 2 个表:

表A:

Perspectiveid   ColumnOrder   UIDisplayName 
-------------------------------------------
213 1 Alpha
213 2 Beta
213 3 Gamma

表 B:列 Id、Col1、Col2、Col3

我想要表 B 中的最终结果:

(`Id, Alpha, Beta, Gamma`)

table B 中的 Col1 对应于 table A 中的 ColumnOrder 1 并且应该重命名为ColumnOrder 1

UIDisplayName[Alpha]

最佳答案

您可以使用数据透视表将行转换为列。您可以使用此链接获取有关枢轴 link 的更多信息
对于您的查询:-

 ; with cte as (
select Perspectiveid,cast(ColumnOrder as varchar(max)) as ColumnOrder,UIDisplayName from tableA)
select * into temptable from (
select Perspectiveid,ColumnOrder,UIDisplayName from cte
) as d
pivot (
max(ColumnOrder) for UIDisplayName in ( [Alpha], [Beta], [Gamma] )
) as P

这会给你结果

让它变得诱人

   Perspectiveid   | [Alpha] | [Beta]  | [Gamma]
213 1 2 3

之后从 temptable 中删除

   delete from temptable

现在将yourtable中的数据插入到这个temptable

  insert into temptable ( Perspectiveid , [Alpha], [beta], [gamma] )
select id, col1, col2, col3 from #tableb

在那之后放下你的 tableB 然后将你的 temptable 重命名为 tableB

  Drop table #tableB

GO
select * into #tableB from temptable


GO

Drop table temptable

如果你想单独更改每一列,那么试试这个

 select ' exec sp_rename ''tableb.col' + cast(columnorder as varchar(5)) + ''', ''' + UIDisplayName + ''', ''COLUMN'''  from tableA

这将为您提供单独执行和更改列名称的查询。

关于sql - 通过将表列映射到其他表的列值来重命名表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com