我有一个“表A”结构如下:TSQL - 动态SQL中的动态列名称?
Act_Code ACT_TYPE_1 ACT_TYPE_2 ACT_TYPE_3 ACT_TYPE_4
-------- -------- ----------- ---------- -----------
ACT1 A NULL NULL NULL
ACT2 NULL B NULL NULL
ACT3 NULL NULL C NULL
ACT4 NULL NULL NULL D
ACT1 A NULL NULL NULL
正如你所看到的,ACT_TYPE数据将始终存入其中提到“Act_Code”字段的最后一个数字字段名称: EG 。 当Act_Code = “ACT1”,该Act_Type存储在字段 “ACT_TYPE_1” 当Act_Code = “ACT2”,该Act_Type存储在字段 “ACT_TYPE_2” 等等...
现在,我想从上面的“表A”读出的数据,并插入到其中具有以下结构的“表B”:
ACT ACT_TYPE
---- --------
1 A
2 B
3 C
4 D
问题: * 1.如何添加“动态列名”内选择查询? *
例如,
INSERT INTO Table_B (ACT, ACT_TYPE)
SELECT RIGHT(Act_Code,1), ## FROM Table_A
我如何处理动态列名作为每个符号 “##” 以上?
我已经试过:
SET @sql = 'INSERT INTO Table_B (ACT,ACT_TYPE) '
SET @sql = @sql + 'SELECT RIGHT(Act_Code,1), '
SET @sql = @sql + '''ACT_TYPE_'' + RIGHT(Act_Code,1) FROM Table_A'
EXEC (@sql)
但它不工作!
请大家帮忙,非常感谢!
您不需要动态查询。您可以在查询中使用“CASE”来选择正确列的值。 – HABO