【问题标题】:How to add Row Numbers and GROUP BY in Access?如何在 Access 中添加行号和 GROUP BY?
【发布时间】:2016-11-11 15:05:08
【问题描述】:

我有一张这样的桌子:

现在我希望按 Field1 分组,这并不难。在此之后,我想为每个组添加一个行号。最后.. 这必须在 Access 中完成,这当然略有不同。所以这是我的代码:

SELECT A.*, (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum
FROM Tabel1 AS A
ORDER BY A.ID;

所以,这很好用,但现在我无法对其进行分组。我该如何分组?

【问题讨论】:

  • 能不能在access中使用ROW_NUMBER()函数?
  • 你希望你的输出是什么样的?
  • @Vijey--我不相信 MS Access 支持窗口功能

标签: sql ms-access group-by row-number


【解决方案1】:

您可以将整个查询包装在子查询中:

select
  B.*
from
( SELECT
    A.*,
   (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum
  FROM Tabel1 AS A
) as B
ORDER BY B.ID;

从这里,您可以执行连接,就好像您的查询输出是一个表一样。我不知道你真正想要分组的内容,但这里有一个例子:

select
  B.Field1, count (*) as count, max (B.RowNum) as max_row
from
( SELECT
    A.*,
   (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum
  FROM Tabel1 AS A
) as B
group by
  b.Field1

-- 2016 年 11 月 14 日编辑--

我想我现在明白了。在这种情况下,首先构建一个查询来处理您的分组。这只是一个例子:

SELECT Field1, min (Id) as min_id, max (id) as max_id
FROM Table1
group by Field1

出于我们示例的目的,将此查询命名为 Table1_Summary

现在,在您的新查询中,您将以与示例完全相同的方式引用 Table1_Summary:

SELECT 
  t.*,
  (select count (*) from Table1_Summary t2 where t.Field1 >= t2.Field1) as RowNum
FROM Table1_Summary t

理论上,您可以在单个查询中执行此操作,但为了可读性/可维护性,我建议您将它们分开。以下是输出示例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 2013-03-15
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多