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)
这可以简单地使用自连接来完成,而不使用任何分析函数,因为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)
这是一个演示.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |