Sql server 按两个日期对查询结果排序

Sql server 按两个日期对查询结果排序,sql-server,datetime,sql-order-by,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:1

我试图使用两个日期来订购一些数据,但无论出于何种原因,我都无法达到预期的结果

考虑以下数据集:

       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

这两个字段都是日期时间字段。不知道为什么我没有得到正确的订单。当我从订单列表中删除任何一个字段并只在其中留下一个字段时,它将正确排序。但是,当我将它们都放入“排序依据”列表时,它并不是先按第一列排序。

您是在外部列v.dos上进行筛选和排序,而不是在ServiceDate上

请检查列


另外,在每个order by column上添加desc,您在外部columnv.dos上进行筛选和排序,但不在ServiceDate上

请检查列


另外,在每个ORDERBY列上添加desc在ORDERBY子句中,V.DOS之后缺少desc。你需要它在你想要的每个日期之后按降序排列。目前,它是按升序DOS排序,然后按降序CreatedOn排序。在order by子句中,V.DOS之后的desc缺少。你需要它在你想要的每个日期之后按降序排列。目前它是按DOS升序排序,然后按CreatedOn降序排序

哦,好主意。我在邮局忘了换了。我发布的查询是该问题的最小可验证示例,在完整查询中,字段别名为“ServiceDate”。您使用的是哪个查询引擎?(oracle、teradata、hive等)尝试按V.DOS desc、V.CreatedOn descOh订购,很好。我在邮局忘了换了。我发布的查询是该问题的最小可验证示例,在完整查询中,字段别名为“ServiceDate”。您使用的是哪个查询引擎?(oracle、teradata、hive等)尝试按V.DOS desc、V.CreatedOn desc订购。这是特定于带日期的订单吗?以前从未对其他类型执行过此操作。默认情况下,每列按升序排列。如果要按降序排序,则需要为每列指定。这是特定于带日期的订单吗?以前从未对其他类型执行过此操作。默认情况下,每列按升序排列。如果要按降序排序,则需要为每列指定。