如何用MS Access查询汇总发票数据:合并PO号与金额至单行
问题解决:Access查询中PO Number为NULL导致多行汇总的处理
问题原因
你的查询将[PO Number]纳入了GROUP BY子句,但同一张发票的明细行里,PO Number存在非空值(456)和NULL两种情况,Access会把这两类行拆分成两个独立分组,所以生成了两行结果。
解决方案
不要将[PO Number]放在GROUP BY中,改用Max()聚合函数提取该发票对应的非空PO Number(因为同一张发票的PO Number应该唯一,Max()会自动忽略NULL,返回有效数值),同时修正FORMAT$函数的括号错误。
修改后的查询代码
SELECT [Invoice Date], [Invoice #], Max([PO Number]) AS [PO Number], FORMAT$(Sum([Amount]),'$#,##0.00') AS [Amount] FROM [Invoice Details] GROUP BY [Invoice Date], [Invoice #] HAVING [INVOICE DATE] BETWEEN #8/11/2022# AND #8/11/2022# ORDER BY [INVOICE #]
额外说明
- Access中日期常量建议用
#包裹,而非方括号,方括号通常用于字段或参数名,可避免歧义 - 如果发票PO Number存在多个不同值(不符合常规业务逻辑),可根据实际需求改用
First()等其他聚合函数,但Max()在仅存在一个非空值时最适用
内容的提问来源于stack exchange,提问作者ChesChang34
相关产品推荐
相关产品推荐

