按两个日期排序查询结果

时间:2018-09-18 22:34:36

标签: sql-server datetime sql-order-by

我试图使用两个日期对某些数据进行排序,但是由于任何原因,我都无法获得预期的结果。

考虑以下数据集:

       DOS          |     CreatedOn
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-04 09:15:00 | 2018-09-14 13:40:42
2018-09-04 09:15:00 | 2018-09-18 12:59:01
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-18 08:30:00 | 2018-09-18 14:22:26
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-18 09:15:00 | 2018-09-18 14:43:13

我正在尝试按以下顺序对数据集进行排序:

       DOS          |     CreatedOn
2018-09-18 09:15:00 | 2018-09-18 14:43:13
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:22:26  
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 12:59:01    
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-14 13:40:42

但是,我从查询结果中得到的是这样的:

        DOS          |     CreatedOn
2018-09-04 09:15:00 | 2018-09-18 14:34:45
2018-09-04 09:15:00 | 2018-09-18 13:52:47
2018-09-04 09:15:00 | 2018-09-18 13:21:10
2018-09-04 09:15:00 | 2018-09-18 13:02:11
2018-09-04 09:15:00 | 2018-09-18 12:59:01
2018-09-04 09:15:00 | 2018-09-18 01:47:07
2018-09-04 09:15:00 | 2018-09-14 13:40:42
2018-09-14 08:15:00 | 2018-09-14 13:17:09
2018-09-18 08:30:00 | 2018-09-18 14:30:35
2018-09-18 08:30:00 | 2018-09-18 14:26:34
2018-09-18 08:30:00 | 2018-09-18 14:25:17
2018-09-18 08:30:00 | 2018-09-18 14:24:09
2018-09-18 08:30:00 | 2018-09-18 14:23:53
2018-09-18 08:30:00 | 2018-09-18 14:23:07
2018-09-18 08:30:00 | 2018-09-18 14:22:26
2018-09-18 09:15:00 | 2018-09-18 14:43:13

这是我的查询:

Select V.DOS,V.CreatedOn from Visits As V where V.DOS between '2018-09-01 00:00:00' and '2018-09-19 00:00:00' Order by V.DOS, V.CreatedOn desc

两个字段都是DateTime字段。不知道为什么我没有得到正确的命令。当我从订单列表中删除任何一个字段并仅保留其中一个字段时,它将正确排序。但是,当我将它们都放入按列表排列的顺序时,并不是按第一列的顺序排列。

2 个答案:

答案 0 :(得分:2)

您在order by子句中缺少V.DOS之后的desc。您需要在每个日期之后按降序排列。目前,它是按DOS升序排序,然后按CreatedOn降序排序

答案 1 :(得分:1)

您正在对外部列 v.dos 进行过滤和排序,而不是对ServiceDate

进行过滤和排序

请检查列!

还要在每个订单上按列添加 desc