使用 Select Into 时出现错误消息

Posted

技术标签:

【中文标题】使用 Select Into 时出现错误消息【英文标题】:Error message while using Select Into 【发布时间】:2016-08-11 05:35:58 【问题描述】:

我使用下面的代码,

SELECT RowsCount = ROW_NUMBER() OVER(ORDER BY PrijsBoek.[Item Code] DESC, PrijsBoek.[Buy-From BP Code] DESC),
*
INTO #Student
FROM [iqbs DataWarehouse].[Purchase].[factPurchasePriceBooks] as PrijsBoek

DECLARE @MaxRowsCount INT
SET @MaxRowsCount = (SELECT MAX(RowsCount) FROM #Student)
DECLARE @Iter INT
SET @Iter = (SELECT MIN(RowsCount) FROM #Student)
WHILE @Iter <= @MaxRowsCount
BEGIN
    SELECT *
    FROM #Student
    WHERE RowsCount = @Iter
    SET @Iter = @Iter + 1
END
DROP TABLE #Student

但我收到以下错误消息:

Msg 207, Level 16, State 1, Line 7
Invalid column name 'RowsCount'.
Msg 207, Level 16, State 1, Line 9
Invalid column name 'RowsCount'.
Msg 207, Level 16, State 1, Line 14
Invalid column name 'RowsCount'.

有人知道吗?

【问题讨论】:

这段代码实际上是代码的精确副本还是您手动重写了其中的任何代码?在我看来,您不应该遇到这个问题,所以我认为您可能在实际代码中的第一种情况下拼错了“Rowscount”。 【参考方案1】:

尝试以下代码并将其应用于您的情况:

SELECT RowsCount = ROW_NUMBER() OVER(ORDER BY Message_Id DESC), * 
INTO #Student
FROM sys.Messages

DECLARE @MaxRowsCount INT = @@ROWCOUNT, @Iter INT = 1, @Text AS VARCHAR(MAX);
SELECT @Iter , @MaxRowsCount

WHILE @Iter <= @MaxRowsCount
BEGIN
    SELECT @Text = Text FROM #Student WHERE RowsCount = @Iter
    PRINT @Text
    SET @Iter += 1;
END
DROP TABLE #Student

【讨论】:

以上是关于使用 Select Into 时出现错误消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 INSERT INTO 时出现 MySQL 错误 2002

Oracle SQL:使用带有递归 CTE 的 SELECT INTO 时出现“缺少关键字”

使用 sql into 时出现未声明的变量错误

为啥当我使用柴油 insert_into 数据到数据库时出现“找不到名为 `execute` 的方法”错误?

执行 INSERT INTO 语句时出现语法错误

将记录添加到 Access 数据库时出现“INSERT INTO 语句中的语法错误”