繁体   English   中英

如何在SELECT查询中包含“订单”或“索引”列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM