我正在通过OleDb使用Access。我有一个包含列ID,GroupID,时间和地点的表。应用程序将新记录插入表中,遗憾的是,Place未正确计算。
我想根据时间的推移更新组中每个记录的正确位置。
假设以下数据:
ID GroupId Time Place
Chuck 1 10:01 2
Alice 1 09:01 3
Bob 1 09:31 1
应该导致:
ID GroupId Time Place
Chuck 1 10:01 3
Alice 1 09:01 1
Bob 1 09:31 2
我可以使用游标提出解决方案,但在Access中无法实现AFAIK。
答案 0 :(得分:2)
我刚刚搜索了“在Access中排名”,我得到了this support.microsoft result。
您似乎使用具有以下表达式的字段创建查询:
Place: (Select Count(*) from table1 Where [Time] < [table1alias].[Time]) + 1
我无法测试,所以我希望它有效。
您可以这样做(queryAbove
是上述查询):
UPDATE table1
SET [Place] = queryAbove.[Place]
FROM queryAbove
WHERE table1.ID = queryAbove.ID
这是一个很长的镜头,但请你试一试。
答案 1 :(得分:0)
我认为时间不是数字或时间格式的列,不幸的是,时间是包含时间格式的数字和稀释的文本字符串。这就是为什么在时间列之后进行排序是非法的。删除dilimiters“:”和“,”转换为整数然后按照numirically排序可以完成这项工作