使用分区依据和排序依据

时间:2019-01-18 02:47:57

标签: sql sql-server date

我正在尝试计算创建的第一个订单和创建的后续订单之间的日期差。使用Date diff,然后使用Partition By和Order by。但这会引发错误“函数DATEDIFF不是有效的窗口函数,不能与OVER子句一起使用”

我尝试使用“总和”,“计数”和“平均值”-但这些数字将不能给出正确的数字,因为它们会将数字相加或取平均值。

Select DATEDIFF(day,a.[DSPCH_CRT_DT],b.[DSPCH_CRT_DT]) over (Partition by a.[ASST_ID] Order by b.[SVC_DSPCH_ID]) as 'Duration'

我希望这能显示两个订单日期之间的差异

FISCAL_YEAR | FISCAL_Quarter | FISCAL_Month | FISCAL_Week | DSPCH_CRT_DT   | Duration
2019          2019Q01          2019M01        201902        2/14/2018 0:00   5
2019          2019Q01          2019M02        201906        3/13/2018 0:00   37
2019          2019Q01          2019M03        201910        4/11/2018 0:00   98
2019          2019Q01          2019M03        201913        5/3/2018  0:00   181

1 个答案:

答案 0 :(得分:0)

尝试一下:

Select 
    DATEDIFF(day,a.DSPCH_CRT_DT,LAG(a.DSPCH_CRT_DT) OVER (Partition by a.[ASST_ID] Order by a.[SVC_DSPCH_ID]))
FROM
    Table a