Проблемы с временными таблицами в запросе 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, а именно:
Invalid column name 'ProductId'
Deferred prepare could not be completed
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