У меня есть «таблицы А» со следующей структурой: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