我有一张这样的表:
现在我希望分组BY Field1,这并不难。在此之后,我想为每个组添加一个行号。最后......这必须在Access中完成,当然稍微不同。所以这就是我的代码:
SELECT A.*, (SELECT COUNT(*) FROM Tabel1 WHERE A.ID>=ID) AS RowNum
FROM Tabel1 AS A
ORDER BY A.ID;
所以,这很好用,但现在我不能把它分组。我怎么组合它?
答案 0 :(得分:0)
您可以将整个查询包装在子查询中:
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
理论上你可以在一个查询中执行此操作,但出于可读性/可维护性的考虑,我建议你将它们分开。以下是输出的示例: