我有一张桌子:
列android:thicknessRatio="2"
中的每个记录都包含另一个表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
等,而不是每列的实际内容。
任何人都可以帮我解决我出错的地方吗?
谢谢
答案 0 :(得分:1)
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
不会被视为列名。它被视为文本
答案 1 :(得分:-1)
SELECT DISTINCT @ColumnName AS ColumnContent FROM regressionDifferences rD
WHERE rD.UniqueID LIKE @UniqueID + '%'
不应该@ColumnName不是别的吗?