显然,在MS Access中有很多关于ROW_NUMBER的问题,通常的反应是它不存在,而是使用COUNT(*)创建类似的东西。不幸的是,这样做并没有给我我需要的结果。
我的数据如下:
RID | QID
---------
1 | 1
1 | 2
1 | 3
1 | 3
2 | 1
2 | 2
2 | 2
我想要的是对RID和QID的唯一计数,以便我的查询输出看起来像
RID | QID | SeqID
------------------
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
1 | 3 | 2
2 | 1 | 1
2 | 2 | 1
2 | 2 | 2
使用COUNT(*)我得到:
RID | QID | SeqID
------------------
1 | 1 | 1
1 | 2 | 2
1 | 3 | 3
1 | 3 | 3
2 | 1 | 1
2 | 2 | 2
2 | 2 | 2
我目前的查询是:
SELECT
d.RID
,d.QID
,(SELECT
COUNT(*)
FROM
Data as d2
WHERE
d2.RID = d.RID
AND d2.QID < d.QID) + 1 AS SeqID
FROM
Data as d
ORDER BY
d.RID
,d.QID
非常感谢任何帮助。
答案 0 :(得分:3)
正如Matt的评论暗示的那样,使这项工作成功的唯一方法就是你的表中有一些列可以唯一地标识每一行。
根据您发布的内容,您似乎没有。如果是这种情况,请考虑添加可用于此目的的新自动增量数字列。让我们假装您调用新列id
。
有了这个,以下查询将起作用:
select t.rid, t.qid,
(select count(*)
from data t2
where t2.rid = t.rid
and t2.qid = t.qid
and t2.id <= t.id) as SeqID
from data t
order by t.rid, t.qid