У меня есть таблица в SQL Server 2005 с переменным количеством столбцов, первые два являются единственными, которые являются постоянными.
Мне удалось получить количество столбцов в таблице, поэтому мне было бы на что рассчитывать, но я не знаю, как выбрать переменное количество столбцов.
SELECT
DISTINCT
COUNT(*)
FROM
INFORMATION_SCHEMA.[COLUMNS]
WHERE
TABLE_NAME = 'SOME_TABLE'
AND
(COLUMN_NAME <> 'STATIC_COL1' AND COLUMN_NAME <> 'STATIC_COL2')
Полагаю, мне нужно использовать цикл while для получения каждого столбца.
Любая помощь будет оценена.
Спасибо.
Edit:
В итоге я использовал предложение @ aF о динамическом SQL (см. Ниже)
DECLARE @CMD AS VARCHAR(MAX)
SET @CMD = 'SELECT '
DECLARE @COL AS VARCHAR(MAX)
DECLARE COLUMN_CURSOR CURSOR FOR
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.[COLUMNS]
WHERE
TABLE_NAME = 'SOME_TABLE'
OPEN COLUMN_CURSOR
FETCH NEXT FROM COLUMN_CURSOR
INTO @COL
WHILE @@FETCH_STATUS = 0
BEGIN
IF @COL = 'STATIC_COL1'
BEGIN
SET @CMD = @CMD + @COL
END
FETCH NEXT FROM COLUMN_CURSOR
INTO @COL
SET @CMD = @CMD + ', CAST(' + @COL +' AS INT) AS ' + @COL
END
CLOSE COLUMN_CURSOR
DEALLOCATE COLUMN_CURSOR
SET @CMD = @CMD + ' FROM SOME_TABLE'
EXEC (@CMD)