在SQL Server 2000存储过程中,我正在尝试对表变量执行更新语句。它目前给出了错误:“列前缀'WST'与查询中使用的表名或别名不匹配。”
UPDATE WST
SET
WST.QtySold = (SELECT SUM(II.QtyShipped)
FROM #InvoiceItems II
WHERE II.InvoiceDate >= WST.StartDate
AND II.InvoiceDate <= WST.EndDate),
WST.TotalSales = (SELECT SUM(ISNULL(II.QtyShipped, 0) * ISNULL(II.UnitPrice, 0))
FROM #InvoiceItems II
WHERE II.InvoiceDate >= WST.StartDate
AND II.InvoiceDate <= WST.EndDate),
WST.TotalCost = (SELECT SUM(ISNULL(II.QtyShipped, 0) * ISNULL(II.UnitCost, 0))
FROM #InvoiceItems II
WHERE II.InvoiceDate >= WST.StartDate
AND II.InvoiceDate <= WST.EndDate)
FROM @WeeklySalesTrend WST
WHERE WST.WeekNo = 1
此错误仅在我创建临时表#InvoiceItems并使用临时表替换两个表的内部联接后才出现。为什么更改临时表的双表内连接会导致此错误,如何修复/绕过它?
答案 0 :(得分:0)
我没有SQL 2000框来测试它,但我认为您的查询语法是正确的。我怀疑可能有隐形控制字符搞乱了解析。这曾经不时发生,但我暂时没有看到这个问题。尝试从头开始将查询键入新的查询窗口。
答案 1 :(得分:0)
答案归结为此,SQL查询分析器给出了错误的错误位置。该错误实际上是因为我在尝试使用WST的代码中有一个高出17行的Insert语句,当时我从来没有将其混淆。我不知道这是查询分析器方面的故障/错误,还是存储过程针对更多线路进行了优化,并且其位置已关闭。无论哪种方式,问题都得到了解决。感谢您的建议和快速回复,并抱歉浪费您的时间。