Sql server SQL Server中状态更改间隔天数

Sql server SQL Server中状态更改间隔天数,sql-server,Sql Server,我需要查找SQL Server 2014中状态更改之间的间隔天数 例如,请参见下面的数据 +--------+--------+------------+-------------+ | status | Number | updated_on | opened_at | +--------+--------+------------+-------------+ | Draft | 100 | 2017-11-03 | 2017-11-03 | | Draft | 100

我需要查找SQL Server 2014中状态更改之间的间隔天数

例如,请参见下面的数据

+--------+--------+------------+-------------+
| status | Number | updated_on | opened_at   |
+--------+--------+------------+-------------+
| Draft  | 100    | 2017-11-03 | 2017-11-03  |
| Draft  | 100    | 2017-12-12 | 2017-11-03  |
| WIP    | 100    | 2017-12-12 | 2017-11-03  |
| Appr   | 100    | 2018-01-05 | 2017-11-03  |
| Launch | 100    | 2018-01-10 | 2017-11-03  |
| Close  | 100    | 2018-01-11 | 2017-11-03  |
+--------+--------+------------+-------------+
基于以上输入,我需要

Draft --- 40 days,
WIP --- 23 days,
appro -- 5 days,
deploy/launch - 1 days,
closed --- 69 days
请帮助我使用SQL查询以获得此结果


谢谢。

我认为你的数字不对。但假设状态是唯一的,这应该满足您的要求:

select status,
       datediff(day, updated_on, lead(updated_on) over (order by updated_on) ) as days
from t;
不过,我不明白第一个和最后一个数字。

试试这个

SELECT
tb.status,
DATEDIFF(dayofyear, tb.opened_at, tb.LastUpdate) AS  DaysInDifference
FROM
(
SELECT 
DISTINCT
status,
Max(updated_on) OVER(PARTITION BY [status]  )LastUpdate,
opened_at
FROM Table1
)AS tb

请解释你的逻辑。不清楚。您好,对于一张票据,将有多个状态,如草稿、在制品、批准等。我需要找到两个状态之间的天数……在我的示例中……您可以看到它在2017-11-03在2017-12-12的草稿中再次处于草稿状态,并在2017-12-13更改为在制品(在我的示例中,它是错误的(2017-12-12))…所以它在草稿中保留了40天..就像这样,它在2018-01-05被更改为appr,所以它在wip中保留了23天..就像对于每个状态,我需要找到一张票在特定状态下保留了多少天..谢谢,是的,你是对的..让我解释清楚..第一个数字应该是在(2017-10-03)打开和更新之间的天数(2017-11-03)和最后一个数字应为更新日期(2018-01-11)和当前数据(2018-02-14)之间的天数。请查看下面的样本数据,并让我知道查询结果…|状态|编号|更新|打开|在|+-------------------------+-------------------++--------------+|草案| 100 | 2017-11-03 | 2017-10-03 |+-------------+-------------------++--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------关闭| 100 | 2018-01-11 | 2017-11-03|是的,你说得对……让我解释清楚……第一个数字应该是从(2017-10-03)开始到(2017-11-03)更新之间的天数,最后一个数字应该是从(2018-01-11)更新到当前数据(2018-02-14)之间的天数。请查看下面的样本数据,并让我知道查询结果…|状态|编号|更新|打开|在|+-------------------------+-------------------++--------------+|草案| 100 | 2017-11-03 | 2017-10-03 |+-------------+-------------------++--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------关闭| 100 | 2018-01-11 | 2017-11-03|“最后一个数字应该是更新日期(2018-01-11)和当前数据(2018-02-14)之间的天数”是否与您的结果中的“状态”相关?您预计更新日期(2018-01-11)和当前数据(2018-02-14)之间的天数为“关闭-69天”?