我有一個「表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