遍历 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
在您的动态查询中未被视为列名。它被视为文本
我有一个 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
在您的动态查询中未被视为列名。它被视为文本