Sql server 如何计算日期范围之间的间隔总和

Sql server 如何计算日期范围之间的间隔总和,sql-server,Sql Server,我需要sql代码来计算具有相同t_编号的两个不同记录之间的间隔(例如,65803为2个月) 数据可能有一个或多个相同t_编号的记录。你从哪里得到3个月?@KDiTraglia两个记录之间的有效日期和有效日期之间有3个月的间隔。每个记录最多只能有两个条目,或者可以有两个以上的条目?如果您有两个以上,您希望使用哪个范围?什么是RDBMS?您尝试过什么?我正在使用sql server 2008。是的,正如我上面所写的,可以有一条或多条记录。@user1429225:如果您有三条记录:1月1日至1月10

我需要sql代码来计算具有相同t_编号的两个不同记录之间的间隔(例如,65803为2个月)


数据可能有一个或多个相同t_编号的记录。

你从哪里得到3个月?@KDiTraglia两个记录之间的有效日期和有效日期之间有3个月的间隔。每个记录最多只能有两个条目,或者可以有两个以上的条目?如果您有两个以上,您希望使用哪个范围?什么是RDBMS?您尝试过什么?我正在使用sql server 2008。是的,正如我上面所写的,可以有一条或多条记录。@user1429225:如果您有三条记录:
1月1日至1月10日
1月15日至1月25日
4月1日至4月10日
,输出结果会是什么?我不知道over的意思,但我会研究它并尝试一下。
t_no.    eff_date         term_date
65803   2011-01-01        2011-06-30
65803   2011-09-01        2011-11-30
65804   2012-02-01        NULL
65805   2011-02-01        2011-06-30
WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY t_no ORDER BY term_date) rn
        FROM    mytable
        )
SELECT  qp.t_no, SUM(DATEDIFF(day, qp.term_date, qn.eff_date))
FROM    q qp
JOIN    q qn
ON      qn.t_no = qp.t_no
        AND qn.rn = qp.rn + 1
GROUP BY
        qp.t_no