如果将GROUP BY
SQL 保存为 Access 中的命名查询,则可以将其用作另一个SELECT
语句的数据源,该语句使用相关子查询生成行号。
因此,将此 SQL 保存为qryInvoices_Items1 ...
SELECT i.product, Sum(i.amount) AS SumOfamount
FROM Invoices_Items AS i
GROUP BY i.product;
此查询将添加一个动态行号 --- 如果基础Invoices_Items
数据发生变化,给定产品的行号可能与下一次运行不同。
SELECT
(
SELECT Count(*)
FROM qryInvoices_Items1 AS q2
WHERE q2.product <= q1.product
) AS row_number,
q1.product,
q1.SumOfamount
FROM qryInvoices_Items1 AS q1;
我在 Access 2007 中测试了该 SQL,它返回了我认为您正在寻找的结果。但是,如果我对这一点有误,请Invoices_Items
在您的问题中包含示例数据(作为文本,而不是屏幕截图),并根据该示例数据向我们展示您想要的输出。
请注意,相关子查询要求数据库引擎为父查询结果集的每一行单独运行该子查询。对于庞大的数据集,这将是一个巨大的性能挑战。但是,如果您的数据集足够小,则性能影响可能是可以容忍的,甚至可能不明显。