sql - 找不到 MS Access SQL FROM 子句语法的错误
问题描述
Select distinct [Doc Type], [Customer Number], count([Customer Number]) , [T] From (
Select distinct A.[Customer Number] & A.[Membership Number], A.[Customer Number] , B.[Doc Type ], B.[SumOpenAmount] From(
SELECT distinct [Doc Type] , [Customer Number], Sum([Open Amount]) as T FROM Data Where [Doc Type] = 'RU')B, [Data] A
Where B.[Customer Number] = A.[Customer Number] Group by [Doc Type])
group by [Doc Type], [Customer Number]
having count([Customer Number]) = 1
抛出 Doc Type 可能引用 SQL 语句的 from 子句中列出的多个表的错误
解决方案
目前,您的查询存在许多语法和次优问题:
GROUP BY
SELECT
:在子句中包含非聚合列的聚合查询中,GROUP BY
必须使用。一些方言允许GROUP BY
省略列,但不允许 Access SQL。此外,DISTINCT
对于GROUP BY
.ALIASES:每当使用子查询和连接时,始终使用表别名以避免派生表和所有表达式的列别名的名称冲突。此外,请避免使用 A、B、C ... 以获取更多信息别名,包括 T。请参阅Bad Habits to Kick :使用表别名,如 (a, b, c) 或 (t1, t2, t3)。
EXPLICIT JOIN:使用显式连接的当前 ANSI SQL 标准,而不是使用过时的隐式连接
WHERE
。请参阅显式与隐式 SQL 连接。
因此,请考虑采用上述准则进行以下调整。
SELECT [doc type]
, [customer number]
, COUNT([customer number]) As CountCustomerNumber -- ALIAS ADDED
, SUM([SumOpenAmount]) As TotalOpenAmount -- AGGREGATED COLUMN
FROM
(SELECT d.[customer number] & d.[membership number] AS CustMemb -- ALIAS ADDED
, d.[customer number]
, agg.[doc type]
, SUM(agg.[TotalSubOpenAmount]) AS SumOpenAmount -- AGGREGATED COLUMN
FROM (SELECT [doc type]
, [customer number]
, SUM([open amount]) AS TotalSubOpenAmount -- INFORMATIVE ALIAS
FROM data
WHERE [doc type] = 'RU'
GROUP BY [doc type]
, [customer number]
) agg -- INFORMATIVE ALIAS
INNER JOIN [data] d -- INNER JOIN USED
ON d.[customer number] = agg.[customer number]
GROUP BY d.[customer number] & d.[membership number] -- GROUP BY COLUMNS ADDED
, d.[customer number]
, agg.[doc type]
) AS sub -- ALIAS ADDED
GROUP BY [doc type]
, [customer number]
HAVING COUNT([customer number]) = 1
注意:由于 Access 不支持查询中的注释。运行前删除所有--
消息。
推荐阅读
- android - LinearLayout 在 XML Android 中无法正常工作
- .net-core - dotnet EF Core 批处理语句在语句失败后继续执行语句
- javascript - 以下方式对于javascript中的构造函数也正确吗?
- android - Kotlin Android中的OKhttp自签名证书
- python - Python - 创建类的对象而不在创建时重复自己
- model-view-controller - EF Core 5.0 如何使用一个通用存储库管理多个实体类
- html - 在粘性 div 内垂直对齐图像
- javascript - 使用 Spring Boot 和 React 将图像上传到数据库:解析 HTTP 请求标头时出错
- sql - sql中的max(sum)分组
- c - 使用作为命令行参数提供的文件大小创建数组