【发布时间】:2016-07-13 12:26:17
【问题描述】:
我正在构建一个 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
首先我必须从最近的第一个 (order by DateOfFile DESC) 开始按日期排序,但如果有两个或多个具有相同日期的文件 (AAAAMMDD),顺序决定如下:最后一个 BatchId 数字和第一个OrderOfLoad 数字(如果两个或多个文件的日期有冲突),因此,对于此处的示例,顺序为
- ABC.DOC ...(记录的另一部分)
- GHI.DOC ...
- XYZ.PDF ...
- DEF.PDF ...
- WWW.XLS ...
如果你们中的任何人能指导我完成此操作的方法,我将不胜感激,这是一个不影响性能的好方法,我想将其插入临时表,然后进行一些循环(最好不是光标),但是目前我没有任何想法。
谢谢大家。
【问题讨论】:
-
您的查询是什么样的?您可以在 Order By 中有超过 1 列,例如
Order By DateOfFile DESC, OrderOfLoad等 -
另外,如果你有两个同名的文件,你想同时显示还是只显示最新的一个?
-
嗨@christiandev,订单看起来像塞尔吉奥订单,但在我的情况下,必须出现 BatchId 和 OrderOfLoad 以防万一有两个或多个相同的日期,如果没有日期与订单冲突它只是按日期。
-
看我的回答,我实际上是按文件和日期分区的,只取最新的。
标签: sql sql-server stored-procedures azure-sql-database