我在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循環來獲取每列。 任何幫助,將不勝感激。 謝謝。
編輯: 我結束了使用@動態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)
「我在SQL Server 2005中有一個表,列數可變」 - 是嗎? –
你能澄清你的最終目標是什麼嗎?你想循環每一列,併爲了什麼目的? – AdaTheDev
@在表格的整個生命週期中,可能... – AakashM