sql server中两天连续日期之间的差异

use*_*311 4 sql sql-server sql-server-2005 sql-server-2008

以下是公司表,我需要根据companyId和.在几天内连续两个日期之间取得差异 rownum

company_id  date    row_num
101         2017-01-12              1
101         2017-02-22              2
118         2017-03-23              1
119         2017-04-18              1
123         2017-01-12              1
123         2017-01-15              2
123         2017-01-22              3
501         2017-01-30              1
501         2017-02-02              2
Run Code Online (Sandbox Code Playgroud)

预计OutPut:

company_id  date    days
101         2017-01-12              0
101         2017-02-22              41
118         2017-03-23              0
119         2017-04-18              0
123         2017-01-12              0
123         2017-01-15              3
123         2017-01-22              7
501         2017-01-30              0
501         2017-02-02              3
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 5

这可以简单地使用自连接来完成,而不使用任何分析函数,因为row_num表中已有.

SELECT  a.company_id, 
        a.billing_failure_date, 
        a.row_num,
        ISNULL(DATEDIFF (d, b.billing_failure_date, a.billing_failure_date), 0) AS Days
FROM    TableName a
        LEFT JOIN TableName b
            ON a.company_id = b.company_id
                AND a.row_num = b.row_num + 1
Run Code Online (Sandbox Code Playgroud)

这是一个演示.