Sql server SQL Server中状态更改间隔天数
我需要查找SQL Server 2014中状态更改之间的间隔天数 例如,请参见下面的数据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
+--------+--------+------------+-------------+
| 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天”?