SQL查询在SQL Server中工作,在Excel中失败(Microsoft Query)

我有以下查询其中按预期工作:

SELECT SERVICE_HISTORY.ServiceMode, SERVICE_HISTORY.CreatedDate, SERVICE_HISTORY.CreatedBy, SERVICE_HISTORY.Branch, SERVICE_HISTORY.Comments FROM DEBA_US.dbo.SERVICE_HISTORY JOIN (SELECT MAX(SERVICE_HISTORY.CreatedDate) AS maxDate, CUSTOMER.AccNo FROM DEBA_US.dbo.CUSTOMER INNER JOIN (DEBA_US.dbo.SERVICE_HISTORY INNER JOIN DEBA_US.dbo.CAR ON SERVICE_HISTORY.ROW_PK = CAR.ROW_PK) ON CUSTOMER.ROW_PK = CAR.ROW_PK WHERE CUSTOMER.AccNo LIKE 'CUS-1234' AND CAR.DateSubmitted IS NULL GROUP BY CUSTOMER.AccNo) AS testQuery ON testQuery.maxDate = SERVICE_HISTORY.CreatedDate 

查询是给我给定客户的最新(最大)服务历史date。

当我在SQL Server中执行查询时,它工作得很好,但是当我把相同的查询放入EXCEL 2010(Microsoft Query)时,它给了我错误:

“testQuery”的列1没有指定列名称
无效的列名'maxDate'
声明不能准备

我无法修复查询来通过错误。 有人可以告诉我为什么Excel不与上述查询工作? 谢谢

你需要把testQuery和maxDate放在单引号内

 SELECT SERVICE_HISTORY.ServiceMode, SERVICE_HISTORY.CreatedDate, SERVICE_HISTORY.CreatedBy, SERVICE_HISTORY.Branch, SERVICE_HISTORY.Comments FROM DEBA_US.dbo.SERVICE_HISTORY JOIN (SELECT MAX(SERVICE_HISTORY.CreatedDate) AS 'maxDate', CUSTOMER.AccNo FROM DEBA_US.dbo.CUSTOMER INNER JOIN (DEBA_US.dbo.SERVICE_HISTORY INNER JOIN DEBA_US.dbo.CAR ON SERVICE_HISTORY.ROW_PK = CAR.ROW_PK) ON CUSTOMER.ROW_PK = CAR.ROW_PK WHERE CUSTOMER.AccNo LIKE 'CUS-1234' AND CAR.DateSubmitted IS NULL GROUP BY CUSTOMER.AccNo) AS 'testQuery' ON testQuery.maxDate = SERVICE_HISTORY.CreatedDate 

你唯一需要做的就是在maxDate周围添加方括号,如下所示:

 SELECT SERVICE_HISTORY.ServiceMode, SERVICE_HISTORY.CreatedDate, SERVICE_HISTORY.CreatedBy, SERVICE_HISTORY.Branch, SERVICE_HISTORY.Comments FROM DEBA_US.dbo.SERVICE_HISTORY JOIN (SELECT MAX(SERVICE_HISTORY.CreatedDate) AS [maxDate], CUSTOMER.AccNo FROM DEBA_US.dbo.CUSTOMER INNER JOIN (DEBA_US.dbo.SERVICE_HISTORY INNER JOIN DEBA_US.dbo.CAR ON SERVICE_HISTORY.ROW_PK = CAR.ROW_PK) ON CUSTOMER.ROW_PK = CAR.ROW_PK WHERE CUSTOMER.AccNo LIKE 'CUS-1234' AND CAR.DateSubmitted IS NULL GROUP BY CUSTOMER.AccNo) AS testQuery ON testQuery.maxDate = SERVICE_HISTORY.CreatedDate