[英]How to include an 'order' or 'index' column in a SELECT query?
我正在使用Access SQL 。 我想在我的查询中添加一个column
,其行为类似于每个记录的row number
,但由于我使用的是聚合函数,因此结果本身并不是id。 是否有任何函数可以为此生成一些行号? 甚至像Autonumber或索引或只是订单 。 所以我的虚拟SQL语法如下:
SELECT [wanted autonumber column], product,Sum(amount) FROM Invoices_Items GROUP BY product
我猜想如果我用自动编号列为这个查询创建一个临时表可能会很好,但我不知道如何做到这一点。
如果将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
样本数据(作为文本,而不是屏幕截图),并根据该样本数据向我们显示您想要的输出。
请注意,相关子查询要求db引擎分别为父查询的结果集的每一行运行该子查询。 这对于庞大的数据集来说将是一个巨大的性能挑战。 但是,如果您的数据集足够小,则可以容忍执行影响,甚至可能无法察觉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.