TSQL-查找SQL Server中多个记录的天数差异

pqs*_*qsk 3 sql t-sql average datediff sql-server-2008

是否有可能找到SQL Server 2008 R2中不同记录的天数差异?

SELECT OrderDate FROM OrdersTbl WHERE SKU='AA0000' ORDER BY ORDERDATE DESC


OrderDate
-----------------------
2009-12-03 00:00:00.000
2009-04-03 00:00:00.000
2008-02-22 00:00:00.000
2008-02-21 00:00:00.000
2007-02-18 00:00:00.000
2007-01-27 00:00:00.000
2006-10-13 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来获取每个订单日期之间的天数,以便我可以找到平均频率.提前致谢.

Ben*_*thy 5

您可以使用公用表表达式和ROW_NUMBER来执行此操作:

WITH OrderDates AS (
    SELECT 
        ROW_NUMBER() OVER (ORDER BY OrderDate DESC) AS RowNumber,
        OrderDate
    FROM OrdersTable 
    WHERE SKU = 'AA0000'
)
SELECT
    AVG(DATEDIFF(DD, O2.OrderDate, O1.OrderDate)) AS AverageFrequency
FROM OrderDates O1
LEFT JOIN OrderDates O2
    ON O2.RowNumber = O1.RowNumber + 1
Run Code Online (Sandbox Code Playgroud)