Heim > Fragen und Antworten > Hauptteil
Gegeben ist eine Tabelle wie unten gezeigt
|date |From | To | |01/01/21 |Open |In progress | |01/03/21 |In progress|In review | |01/10/21 |In Review |Done | |01/15/21 |Done |Resolved |
Gibt es eine Möglichkeit, die in jedem Status verbrachte Zeit basierend auf dem Datum der Statusänderung zu verfolgen? Die Tabelle, mit der ich arbeite, enthält nur eine Datumsspalte.
Das gewünschte Ergebnis sieht so aus
|Time spent in phase|Status| |2 |Open |7 |In review |5 |Done
Ich habe nur eine Tabelle, mit der ich arbeiten kann. Gibt es also eine Abfrage, die dieses Problem gut lösen würde? Für diesen Workflow sind Regeln festgelegt, sodass nur geöffnete Dateien ausgeführt werden können.
Wenn ja, ist es möglich, diese Workflow-Statusänderungen zu nutzen, um potenzielle Anfragen zu erhalten?
P粉5059175902024-02-26 16:29:29
尽管我最后对你的“问题”发表了评论,但我还是创建了一个小提琴。它有两个选项:
SELECT DATEDIFF(COALESCE(LEAD(`Date`) OVER (ORDER BY `Date`),`date`),`Date`) as 'Time spent in phase', `From` FROM ThatLooksLikethis;
输出:
阶段花费的时间 | 来自 |
---|---|
2 | 打开 |
7 | 进行中 |
5 | 审核中 |
0 | 完成 |
SELECT DATEDIFF(`Date`,COALESCE(LAG(`Date`) OVER (ORDER BY `Date`),`date`)) as 'Time spent in phase', `From` FROM ThatLooksLikethis;
输出:
阶段花费的时间 | 来自 |
---|---|
0 | 打开 |
2 | 进行中 |
7 | 审核中 |
5 | 完成 |
附注这个答案使用MySQL 8.0函数 LEAD< /a> 和 LAG。如果您使用的不是 MySQL 8.0,而是旧版本,那么这个答案可能没用......