Datediff上次和以前的日期SQL

时间:2018-03-18 19:57:21

标签: sql-server tsql

我正在学习SQL,我需要做几件事。

我正在进行查询,以便将之前的orderdate与orderdate进行比较。我想为此使用相关子查询。我已经使用Cross Apply和Window函数创建了它。

目前我有这个:

select 
    b1.klantnr, 
    DATEDIFF(D, (Select MAX(b1.Besteldatum)), 
                (Select MAX(b1.Besteldatum) 
                 where besteldatum not in (Select MAX(b1.besteldatum)))) as verschil 
from 
    bestelling b1 
group by 
    b1.klantnr, b1.besteldatum

我在datediff列中只获得null个值。它应该返回:

Results

我正在使用SQL Server 2014 Management Studio。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

这是一个简单的方法:

select datediff(day, min(bs.Besteldatum), max(bs.Besteldatum)) as most_recent_diff
from (select top (2) bs.*
      from bestelling bs
      order by bs.Besteldatum
     ) bs;

这使用子查询,但不使用相关子查询。如果您在bestselling(Besteldatum)上有索引,那么应该有非常好的表现。

答案 1 :(得分:0)

相关的子查询方式。

select top 1 bs.*,datediff(day,
                           (select max(bs1.Besteldatum) 
                            from bestelling bs1 
                            where bs1.Besteldatum<bs.Besteldatum),
                           bs.Besteldatum
                          ) as diff
from bestelling bs
order by bs.Besteldatum desc

这只给出了最新日期和之前日期之间的差异。如果您需要所有记录,请从查询中删除top 1