谁能发现我写的这个 MS Access SQL 代码中的 SQL 错误?

问题描述

以下是表格:Tables & Relationships

我的目标是说明服务代表的名字、服务代表的姓氏和剩余小时数,该小时数是通过扣除 [服务请求].[总小时数] - [服务请求数].[花费的小时数] 计算得出的。

  SELECT
[Service Rep].[First Name],[Service Rep].[Last Name],[Service Requests].[Total Hours] - [Service Requests].[Hours Spent] AS [Hours Remaining]
FROM [Service Rep]  INNER JOIN Client ON
[Service Rep].[Service Rep Number] = Client.[Service Rep Number] 
INNER JOIN  [Service Requests] ON 
Client.[Client Number] = [Service Requests].[Client Number] 
INNER JOIN [Service Requests] ON
[Service Requests].[Service Code] = [Service].[Service Code] 
group by [Service Rep].[First Name],[Service Rep].[Last Name];

Error Message 我收到了这个 - 在查询表达式中。 (错误 3075)

谁能告诉我我的 sql 查询出了什么问题?

在 Gordon Linoff 的帮助下更正代码

SELECT [Service Rep].[First Name],SUM([Service Requests].[Total Hours] - [Service Requests].[Hours Spent]) AS [Hours Remaining]
FROM (([Service Rep]  INNER JOIN
       Client
       ON [Service Rep].[Service Rep Number] = Client.[Service Rep Number]
      ) INNER JOIN
      [Service Requests]
      ON Client.[Client Number] = [Service Requests].[Client Number] 
     ) INNER JOIN
     [Service]
     ON [Service Requests].[Service Code] = [Service].[Service Code] 
GROUP BY [Service Rep].[First Name],[Service Rep].[Last Name]
ORDER BY SUM([Service Requests].[Total Hours] - [Service Requests].[Hours Spent]);

解决方法

您的代码有多个问题。不知道你在做什么,有3个明显的:

  • MS Access 需要为多个 JOIN 加上不恰当的括号。
  • 您的 SELECT 列与 GROUP BY 列不一致。
  • GROUP BY 引用了一个未定义的表别名。

也许你想要:

SELECT [Service Rep].[First Name],[Service Rep].[Last Name],SUM([Service Requests].[Total Hours] - [Service Requests].[Hours Spent]) AS [Hours Remaining]
FROM (([Service Rep]  INNER JOIN
       Client
       ON [Service Rep].[Service Rep Number] = Client.[Service Rep Number]
      ) INNER JOIN
      [Service Requests]
      ON Client.[Client Number] = [Service Requests].[Client Number] 
     ) INNER JOIN
     [Service Requests]
     ON [Service Requests].[Service Code] = [Service].[Service Code] 
GROUP BY [Service Rep].[First Name],[Service Rep].[Last Name];