【问题标题】:Days between max date in each group每组中最大日期之间的天数
【发布时间】:2015-11-24 15:23:32
【问题描述】:

我想知道每个订单之间的天数。我有每个订单的下达日期,以及显示其第一、第二、第三等订单的参考

我想看看订单 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

最后一个订单可能会查看当前日期来计算日期差异。

【问题讨论】:

  • 标记使用的 dbms 产品。当涉及到日期/时间时,太多的产品远不符合 ANSI SQL。
  • 那个人并没有真正希望得到解决,因为编辑说他们最终只是使用了 excel。也许我不得不想另一种方法来解决这个问题,我正在尝试计算连续的街区,但周末给我带来了问题。这只是我尝试做的简化版本。
  • 标记使用的 dbms 产品。一些常见的 dbms 不提供 LAG/LEAD,这会真正简化答案。

标签: sql datediff rank


【解决方案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;

日期算法取决于数据库。

【讨论】:

  • 它的接缝非常明显,现在我已经看到了答案,刚刚尝试过,效果很好。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
相关资源
最近更新 更多