Office中国论坛/Access中国论坛
标题:
排序问题请教
[打印本页]
作者:
tianya0073
时间:
2016-5-16 13:55
标题:
排序问题请教
各们老师:
我有一个排序问题向大家请教如何实现,象下面有A、B两列,排序首先以A列按大小排序,然后B列基本也按大小排序,但在B列
根据A列进入下一组时,如下一组有和本组相同的值,则将这个值放在第一,其余按大小排列,如:A列1,1,1 这组,B列按a,b,c 大小排序,
进入A列2,2,2这组,B列按c,a ,b 排列。
谢谢!
A
B
1
a
1
b
1
c
2
c
2
a
2
b
3
b
3
a
3
c
3
d
4
a
4
b
4
c
5
a
5
b
6
b
6
a
6
c
6
d
作者:
roych
时间:
2016-5-16 16:40
查询做不到的。
即便用ado也是比较复杂的写法。需要先把top的前几个插入,再读取插入的记录中last那个,再回头find之前的排序……
最好用别的主键
-------------------------------------
此外,看不出这个有什么意义。Access是数据库,不是用来玩游戏的,甚至很多高级算法Access都不care。
作者:
cgsilicone
时间:
2016-5-16 23:08
本帖最后由 cgsilicone 于 2016-5-17 08:42 编辑
定义一个函数,就可以用查询得到要求的结果。
Function 排序(A列数据 As String, B列数据 As String)
Set 数据表 = CurrentDb.OpenRecordset("SELECT A FROM 表 GROUP BY A ORDER BY A")
临时数据1 = ""
Do While 数据表!A <> A列数据
临时数据2 = DLookup("Max(B)", "表", "A='" & 数据表!A & "'")
If 临时数据1 <> 临时数据2 Then
临时数据1 = 临时数据2
Else
临时数据1 = DLookup("Max(B)", "表", "A='" & 数据表!A & "' and B<>'" & 临时数据2 & "'")
End If
数据表.MoveNext
Loop
If 临时数据1 = B列数据 Then 排序 = "0" & B列数据 Else 排序 ="1" & B列数据
End Function
然后一个查询就可以了 “SELECT 表.* FROM 表 ORDER BY 表.A, 排序([A],[B]);”
作者:
tianya0073
时间:
2016-5-17 14:59
谢谢!我试一下,这个做生产排序时为减少换线要用到的。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3