Проблемы с временными таблицами в запросе SQL через Excel / MS Query

У меня есть запрос SQL через соединение MS Query в Excel, который включает временную таблицу.

Код:

CREATE TABLE #PV (ProductID varchar(255), Price int);

INSERT INTO #PV(ProductID, Price)
   SELECT DISTINCT 
      PLR.ProductID, MAX(PLR.normal_price)
   FROM 
      dbo.t_price_lists_r AS PLR 
   WHERE 
      PLR.price_list = 1115
   GROUP BY 
      PLR.ProductID

SELECT P.ProductID, P.Price 
FROM #PV AS P

BEGIN DROP TABLE #PV END

Код прекрасно работает в SSMS и возвращает правильные результаты, но я получаю три отчетливые ошибки при запуске его в Excel/MS Query, а именно:

  1. Invalid column name 'ProductId'

  2. Deferred prepare could not be completed

  3. Statement(s) could not be prepared

Обычно я выполняю SQL-запросы через Excel ежедневно без происшествий.

Спасибо заранее!

2 ответа

Я обнаружил, что добавляя "SET NOCOUNT ON" в начале SQL, MS Query в Excel может содержать временные таблицы.

Спасибо всем, что прокомментировал.

При устранении неполадок обычно помогает начать с того, что работает, и продолжать добавлять материал до тех пор, пока он не сломается. Так что попробуйте запустить их, и он покажет вам, что не работает.

1

CREATE TABLE #PV (ProductID varchar(255), Price int);
GO
SELECT P.ProductID, P.Price 
FROM #PV AS P;
GO
BEGIN DROP TABLE #PV END

2

CREATE TABLE #PV (ProductID varchar(255), Price int);
GO
INSERT INTO #PV(ProductID, Price)
    SELECT 'Test',1;
GO
SELECT P.ProductID, P.Price 
FROM #PV AS P;
GO
BEGIN DROP TABLE #PV END

3

CREATE TABLE #PV (ProductID varchar(255), Price int);
GO
INSERT INTO #PV(ProductID, Price)
  SELECT DISTINCT PLR.ProductID, MAX(PLR.normal_price)
FROM 
      dbo.t_price_lists_r AS PLR 
WHERE 
      PLR.price_list = 1115
   GROUP BY 
      PLR.ProductID
GO
SELECT P.ProductID, P.Price 
FROM #PV AS P;
GO
BEGIN DROP TABLE #PV END
Другие вопросы по тегам