You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何参照Table 2的ItemName选取Table 1的列并重构表头?

问题描述

现有两张数据表:

Table 1

RowIDA1A2A3
111.00.1
222.00.2

Table 2

Item NameCell location
Item1A1
Item2A3
Item3A2

需求:参照Table 2中Item Name与Cell location的映射关系,选取Table 1对应列并将表头替换为Item Name,得到最终表:

目标结果

RowIDItem1Item2Item3
110.11.0
220.22.0

已尝试对Table 2使用PIVOT和LEFT JOIN,寻求正确实现方法。


解决方案

静态实现(映射固定)

如果Table 2的映射关系不会变动,直接根据映射给Table 1的列重命名即可,这是最简单高效的方式:

SELECT 
    RowID,
    A1 AS Item1,
    A3 AS Item2,
    A2 AS Item3
FROM Table1;

动态实现(映射可变)

如果Table 2的映射可能新增、修改,需要用动态SQL自动适配映射关系:

DECLARE @sql NVARCHAR(MAX);

-- 生成列别名映射片段
SELECT @sql = STRING_AGG(
    QUOTENAME([Cell location]) + ' AS ' + QUOTENAME([Item Name]),
    ', '
)
FROM Table2;

-- 拼接完整查询语句
SET @sql = 'SELECT RowID, ' + @sql + ' FROM Table1';

-- 执行动态SQL
EXEC sp_executesql @sql;

说明:动态SQL会自动读取Table 2中的映射规则,生成对应的列别名,无需手动修改查询语句即可适配映射变化。


内容的提问来源于stack exchange,提问作者Rahul Prajapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:10:39