【发布时间】:2021-12-14 18:36:28
【问题描述】:
我试图弄清楚如何遍历一个表来计算一个 id 不处于活动状态的天数。
假设我有下表:
| id | Status | Date |
|---|---|---|
| 1 | Active | 1/15/21 |
| 1 | Inactive | 1/13/21 |
| 1 | Active | 1/12/21 |
| 1 | Inactive | 1/9/21 |
| 1 | Active | 1/7/21 |
| 2 | Active | 1/5/21 |
| 2 | Inactive | 1/4/21 |
| 2 | Inactive | 1/2/21 |
| 2 | Active | 1/1/21 |
这个例子的期望输出应该是:
| id | Days Inactive |
|---|---|
| 1 | 5 |
| 2 | 3 |
当状态从 Active 变为 Inactive 时,我想执行 DATEDIFF()。
我不能只为 Status Active 执行 SELECT 并在该范围内的 MAX 和 MIN 日期上执行 DATEDIFF(),因为它可能会在该范围之间变为 ACTIVE,这会使计数不同,如示例表。
我认为我需要一个 LOOP 和/或 CURSOR 以及一个随着每个 id 的计数增长而添加的变量,我只是不确定如何执行它。
非常感谢任何建议或想法!
【问题讨论】: