两个或多个值冲突时的SQL Server存储过程顺序

Dan*_*y G 2 sql sql-server stored-procedures azure-sql-database

我正在构建一个SQL Server存储过程(在Sql Azure上)我能够为需求生成数据,但我无法下订单,我不知道该怎么做.

以下是此时的查询结果(这是带有必要列的随机数据)

File    | Description   | DateOfFile | OrderOfLoad | BatchID
--------+---------------+------------+-------------+---------    
ABC.DOC | a description | 2016-07-12 |      2      | 10
DEF.PDF | a description | 2016-07-10 |      4      |  6
GHI.DOC | a description | 2016-07-12 |      2      |  3
XYZ.PDF | a description | 2016-07-10 |      1      |  7
WWW.XLS | a description | 2016-05-01 |      5      | 15
Run Code Online (Sandbox Code Playgroud)

首先,我必须从最近的first(order by DateOfFile DESC)按日期排序,但是如果有两个或更多具有相同日期的文件(AAAAMMDD),则顺序决定如下:最后一个BatchId数字和第一个OrderOfLoad数字(如果存在冲突)对于两个或多个文件的日期),因此,对于此处的示例,订单将是

  1. ABC.DOC ......(记录的另一部分)
  2. GHI.DOC ......
  3. XYZ.PDF ......
  4. DEF.PDF ......
  5. WWW.XLS ......

我很感激,如果你们中的任何一个人能够指导我完成这个,一个不影响性能的好方法,我想把它插入一个时态表然后做一些循环(最好不是光标),但是现在我没有想法.

多谢你们.

小智 7

在ORDER BY子句中尝试这个:

ORDER BY DateOfFile DESC, BatchId DESC, OrderOfLoad
Run Code Online (Sandbox Code Playgroud)