Access查询如何添加组内排序字段实现分组按指定数值排序
Access实现组内排序序号的方法
完全可以实现,你可以通过关联子查询生成组内排序的序号字段,具体操作如下:
实现代码
假设你的源表名为业务表,分组字段为分组标识,需要按排序数值字段做组内升序排序,ID为唯一自动编号索引,查询代码如下:
SELECT t1.ID, t1.分组标识, t1.排序数值字段, (SELECT COUNT(*) FROM 业务表 t2 WHERE t2.分组标识 = t1.分组标识 AND (t2.排序数值字段 < t1.排序数值字段 OR (t2.排序数值字段 = t1.排序数值字段 AND t2.ID <= t1.ID))) AS 组内序号 FROM 业务表 t1 ORDER BY t1.分组标识, t1.排序数值字段, t1.ID;
规则说明
- 子查询的逻辑是统计同一分组内,数值比当前记录小、或者数值相等但ID更小的记录总数,得到的结果就是当前记录的组内排序序号,即使出现数值相同的情况,也能通过唯一ID保证序号不重复
- 如果需要组内降序排序,把
t2.排序数值字段 < t1.排序数值字段改成t2.排序数值字段 > t1.排序数值字段即可 - 如果需要按多个字段组合排序,在子查询的WHERE条件里追加对应的字段判断规则即可
提示:如果表的数据量较大,建议给分组字段和排序用的数值字段加索引,可大幅提升查询运行效率。
内容的提问来源于stack exchange,提问作者Ashraf Fouad
相关产品推荐
相关产品推荐

