我对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添加到每个字段中,而不会造成麻烦。
有趣的是,它适用于某些记录,而对于另一些记录,结果却是乱序的,如上所示。
答案 0 :(得分:0)
Your "numbers" are probably text, so convert to numeric using Val():
ORDER BY DRS_FILE.SSN, Val(DRS_FILE.P1);