【发布时间】:2020-04-20 22:02:43
【问题描述】:
我有多个表要合并到一个表中。这些表代表相同的数据,但具有不同的列标题,因为它们来自多个来源。例如,在 Table1 中,我们将有“Tel_Nbr”,在 Table2 中为“TelNumber”,在 Table3 中为“TelNum”等。为了更好的可维护性,我想我可以创建一个映射表,而不是重命名每个表中的列每个表的每个列标题名称到最终输出表中的通用描述如下所示。但是,我不确定这是最好的方法,因为我使用的是映射表中的表名,而且我无法弄清楚查询语法。
表1
First_Name | Last_Name | Telephone_Number
-----------------------------------------
John | Smith | 3333
Michael | Taylor | 4444
表2
F_Name | L_Name | Tel_Nbr
--------------------------------
Joe | Lopez | 5555
Rachel | Moore | 6666
映射表
Output | Table1 | Table2
----------------------------------------
FirstName | First_Name | F_Name
LastName | Last_Name | L_Name
TelephoneNbr | Telephone_Number | Tel_Nbr
输出
FirstName | LastName | TelephoneNbr
-----------------------------------------
John | Smith | 3333
Michael | Taylor | 4444
Joe | Lopez | 5555
Rachel | Moore | 6666
【问题讨论】:
-
如果要更改列的标题,则需要动态 SQL。
标签: sql sql-server tsql merge dynamic-sql