遍历 SQL 服务器中的 table 条记录

Looping through table records in SQL Server

我有一个 table 这样的:

ColumnName 中的每条记录都包含另一个 table、regressionDifferences 中列的名称。我想遍历 ColumnName 和 select regressionDifferences 中的每一列并将它们插入到 ColumnContent 中。目前我只是专注于将列内容打印到屏幕上,然后我会担心插入它。 这是我到目前为止写的:

DECLARE @LoopCounter INT = 1, @MaxRowNumber INT = 42762,
@ColumnName VARCHAR(max), @UniqueID VARCHAR(max)

WHILE(@LoopCounter < @MaxRowNumber)

BEGIN

SELECT @ColumnName = ColumnName
FROM ColumnDifference WHERE RowNumber = @LoopCounter

SELECT @UniqueID = UniqueID
FROM ColumnDifference WHERE RowNumber = @LoopCounter

SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD
WHERE rD.UniqueID LIKE @UniqueID + '%'

SET @LoopCounter = @LoopCounter + 1

END

出于某种原因,这只是返回列的名称,即 a_4, a_4, a_4, a_10, a_11, a_6 等,而不是每列的实际内容。

谁能帮我看看哪里出错了?

谢谢

SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD
WHERE rD.UniqueID LIKE @UniqueID + '%'

@ColumnName 不应该是别的吗?

declare @sql varchar(max);
set @sql ='SELECT DISTINCT ' + @ColumnName + 'AS ColumnContent FROM regressionDifferences rD WHERE rD.UniqueID LIKE ''' 
                       + @UniqueID + '%'''
exec(@sql);

使用上面的查询创建你需要的动态sql。

你的动态查询等同于

SELECT DISTINCT 'a_4' AS ColumnContent FROM regressionDifferences rD
WHERE rD.UniqueID LIKE '2016-07-26''+ '%'

变量 @ColumnName 在您的动态查询中未被视为列名。它被视为文本