Microsoft Access查询排序顺序

时间:2019-01-18 17:46:32

标签: sql ms-access

我对order by子句有疑问。 目标

像SSN一样分组

然后,我想按优先级编号列出。 1是最高优先级数字

查询

SELECT DRS_FILE.AGENCY, DRS_FILE.P1, DRS_FILE.FUND, DRS_FILE.ACCOUNT, DRS_FILE.LNAME, DRS_FILE.FNAME AS FNAME, DRS_FILE.SSN, DRS_FILE.PRIOR, DRS_FILE.BALDUE, DRS_FILE.BALDUE AS DRSBAL, DRS_FILE.FILL1, DRS_FILE.FILEDATE, DRS_FILE.FILL2
FROM DRS_FILE
ORDER BY DRS_FILE.SSN, DRS_FILE.P1;

但是,无论我如何处理查询,日期仍然是混乱的,请在下面查看我的结果。

AGENCY     P1    FUND     LNAME     FNAME    SSN        PRIOR       FILEDATE    FILL2
6909       28    K        SWASEY    JOHN    999999999   051         190117 
2620       8     L        SWASEY    JOHN    999999999   052         190117

如果您注意到我在P1列中使用的是第二个by by子句,但该顺序不正确,因为优先级数字8应该大于28。有人可以帮我解决这个问题吗?为什么会这样呢?我究竟做错了什么?我尝试过在order by子句中将ASC和DESC添加到每个字段中,而不会造成麻烦。

有趣的是,它适用于某些记录,而对于另一些记录,结果却是乱序的,如上所示。

1 个答案:

答案 0 :(得分:0)

Your "numbers" are probably text, so convert to numeric using Val():

ORDER BY DRS_FILE.SSN, Val(DRS_FILE.P1);