我有一个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
我每天都通过Excel运行SQL查询而不会发生任何事故。
非常感谢提前!
答案 0 :(得分:0)
每当进行故障排除时,通常有助于从有效的方法开始并继续添加内容直到它中断。所以尝试运行这些,它会告诉你什么不起作用。
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
答案 1 :(得分:0)
我发现通过在SQL开头添加'SET NOCOUNT ON',Excel的MS Query可以容纳临时表。
感谢所有评论。