我在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