我正在尝试编写一个简单的查询,该查询将采用一个表,按该表的日期字段排序并添加包含行计数的列。这是T-SQL中最简单的事情,但Access不支持Row_Num()函数。
所以,假设我的“日期”表格如下:
ID Date
1 02/01/2017
2 02/03/2017
3 01/27/2017
4 02/05/2017
5 02/01/2017
6 02/03/2017
我的Access查询结果应如下所示:
ID Date RowNum
3 01/27/2017 1
1 02/01/2017 2
5 02/01/2017 3
2 02/03/2017 4
6 02/03/2017 5
4 02/05/2017 6
我试图找到这个问题的答案,但我发现的所有答案似乎都依赖于从一行到下一行的ID字段值的差异。然后我尝试将我找到的概念(创建一个带有dcount的列,其中A.ID> ID)应用到Date字段,但随后我得到了每个日期的计数。但是我需要计算每个日期,即使可能有多个日期是相同的。
提前致谢
答案 0 :(得分:1)
一种方法是相关子查询:
select d.*,
(select count(*) from dates as d2 where d2.date <= d.date) as rownum
from dates as d
order by d.date;
这不是很有效,但在一张小桌子上它确实可以达到你想要的效果。但最简单的方法可能是在表格上使用光标。
这假设日期不同,如问题中的示例数据。
编辑:
仔细观察,日期并不是唯一的。所以你可以使用多个条件:
select d.*,
(select count(*)
from dates as d2
where d2.date < d.date or
(d2.date = d.date and d2.id <= d.id)
) as rownum
from dates as d
order by d.date;