【发布时间】:2022-02-18 10:38:31
【问题描述】:
我正在做一些花名册分析,需要确定员工何时连续工作了 5 天或更长时间。在我的表中,我可以提取如下数据(注意,列更多,这只是一个缩减示例):
| Emp | Start | First_Entry |
|---|---|---|
| 1234 | 23/06/2016 | 1 |
| 1234 | 24/06/2016 | 1 |
| 1234 | 24/06/2016 | 0 |
| 1234 | 25/06/2016 | 1 |
| 1234 | 26/06/2016 | 1 |
| 1234 | 27/06/2016 | 1 |
| 1234 | 28/06/2016 | 1 |
| 1234 | 29/06/2016 | 1 |
| 1234 | 29/06/2016 | 0 |
| 1234 | 30/06/2016 | 1 |
| 1234 | 2/07/2016 | 1 |
| 1234 | 3/07/2016 | 1 |
| 1234 | 3/07/2016 | 0 |
| 1234 | 4/07/2016 | 1 |
| 1234 | 4/07/2016 | 0 |
| 1234 | 5/07/2016 | 1 |
| 1234 | 6/07/2016 | 1 |
| 1234 | 9/07/2016 | 1 |
| 1234 | 10/07/2016 | 1 |
| 1234 | 11/07/2016 | 1 |
| 1234 | 12/07/2016 | 1 |
而我所追求的是这样的:
| Emp | Start | First_Entry | Consecutive_Days | Over_5 | Status |
|---|---|---|---|---|---|
| 1234 | 23/06/2016 | 1 | 1 | 0 | Worked < 5 |
| 1234 | 24/06/2016 | 1 | 2 | 0 | Worked < 5 |
| 1234 | 24/06/2016 | 0 | 2 | 0 | Worked < 5 |
| 1234 | 25/06/2016 | 1 | 3 | 0 | Worked < 5 |
| 1234 | 26/06/2016 | 1 | 4 | 0 | Worked < 5 |
| 1234 | 27/06/2016 | 1 | 5 | 1 | Worked >= 5 |
| 1234 | 28/06/2016 | 1 | 6 | 1 | Worked >= 5 |
| 1234 | 29/06/2016 | 1 | 7 | 1 | Worked >= 5 |
| 1234 | 29/06/2016 | 0 | 7 | 1 | Worked >= 5 |
| 1234 | 30/06/2016 | 1 | 8 | 1 | Worked >= 5 |
| 1234 | 02/07/2016 | 1 | 1 | 0 | Worked < 5 |
| 1234 | 03/07/2016 | 1 | 2 | 0 | Worked < 5 |
| 1234 | 03/07/2016 | 0 | 2 | 0 | Worked < 5 |
| 1234 | 04/07/2016 | 1 | 3 | 0 | Worked < 5 |
| 1234 | 04/07/2016 | 0 | 3 | 0 | Worked < 5 |
| 1234 | 05/07/2016 | 1 | 4 | 0 | Worked < 5 |
| 1234 | 06/07/2016 | 1 | 5 | 1 | Worked >= 5 |
| 1234 | 09/07/2016 | 1 | 1 | 0 | Worked < 5 |
| 1234 | 10/07/2016 | 1 | 2 | 0 | Worked < 5 |
| 1234 | 11/07/2016 | 1 | 3 | 0 | Worked < 5 |
| 1234 | 12/07/2016 | 1 | 4 | 0 | Worked < 5 |
我真的不知道如何获得连续几天的累积计数,所以你能提供的任何帮助都会很棒
【问题讨论】:
-
请向我们展示您的尝试。
-
嗨,Dale,这个挑战完全难倒我,但答案(与“差距和岛屿”有关)让我有了一个全新的认识
标签: sql sql-server date gaps-and-islands