2015-11-24 35 views
1

我想知道每个订单之间的天数。我有每个订单的日期和一个参考,以显示其第一,第二等第三等订单每组中的最大日期之间的天数

我想看看,如果有多少天之间有订单1和2之间,然后多少天之间2和3等等。

select OrderID, OrderDate, RankOrder 
from Orders 

一些示例数据将是:

Order 1 -> 01/01/2015 -> 1 
Order 2 -> 03/01/2015 -> 2 
Order 3 -> 10/01/2015 -> 3 

我希望结果有天数一个额外的列:

Order 1 -> 01/01/2015 -> 1 -> 2 
Order 2 -> 03/01/2015 -> 2 -> 7 
Order 3 -> 10/01/2015 -> 3 -> 0 

最后的顺序可能会看在目前的日期制定出日期。

+4

使用的标签dbms产品。当谈到日期/时间太多的产品远离ANSI SQL兼容。 – jarlh

+0

[SQL DateDiff高级用法?]的可能的重复(http://stackoverflow.com/questions/593898/sql-datediff-advanced-usage) – davejal

+0

那个人真的没有看到解决,因为编辑说他们只是使用无论如何,最终都会胜出。也许我不得不想出另一种方法来解决这个问题,我试图制定出连续的方块,但是周末会引起我的问​​题。这只是我试图做的简化版本。 – user3691566

回答

1

因为你有排名的功能,这只是一个与日期算术的连接。使用SQL Server的datediff()功能,这看起来像:

select o.*, 
     datediff(day, o.OrderDate, 
       coalesce(onext.OrderDate, getdate()) as diff 
from orders o left join 
    orders onext 
    on o.rankorder = onext.rankorder - 1; 

的日期算术取决于数据库。

+0

它的接缝如此明显,现在我已经看到了答案,只是试过这个,它的工作很好。谢谢 – user3691566

相关问题