我有一张这样的桌子:

列ColumnName中的每个记录都包含另一个表regressionDifferences中的列的名称。我想循环遍历ColumnName并选择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等,而不是每一列的实际内容。
有人能帮我找出我哪里出了问题吗?
谢谢
发布于 2016-08-03 11:13:57
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不被视为列名。它被视为文本。
发布于 2016-08-03 11:05:49
SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD
WHERE rD.UniqueID LIKE @UniqueID + '%'@ColumnName不应该是别的东西吗?
https://stackoverflow.com/questions/38741684
复制相似问题