我想弄清楚如何在有人缺席時獲取包含人員資訊的表格的連續編號,但當此人沒有缺席一個月時,計數應該重新開始。
Here is an example of what I am looking for.
| Prior Month Absent In a Row | Absent? | MonthDate | PersonId |
| 1 | Yes | 2022-01-01| 101 |
| 2 | Yes | 2022-02-01| 101 |
| - | No | 2022-03-01| 101 |
| 1 | Yes | 2022-04-01| 101 |
| 2 | Yes | 2022-05-01| 101 |
| 3 | Yes | 2022-06-01| 101 |
| - | No | 2022-01-01| 102 |
| 1 | Yes | 2022-02-01| 102 |
| 2 | Yes | 2022-03-01| 102 |
| 3 | Yes | 2022-04-01| 102 |
| 4 | Yes | 2022-05-01| 102 |
| 5 | Yes | 2022-06-01| 102 |
所以基本上對于每個人的 Id,當他們連續缺席時,它應該計算它但是當后續月份為否時,它會從 1 開始。
我按功能使用了行磁區,但效果不佳。
任何建議或鏈接將不勝感激。
uj5u.com熱心網友回復:
select case when grp is not null then row_number() over(partition by PersonId, grp order by MonthDate) end as prior_month_row
,Absent
,MonthDate
,PersonId
from
(
select *
,case when Absent = 'Yes' then count(case when Absent = 'No' then 1 end) over(partition by PersonId order by MonthDate) end as grp
from t
) t
order by PersonId, MonthDate
| prior_month_row | 缺席的 | 月日 | 人物編號 |
|---|---|---|---|
| 1個 | 是的 | 2022-01-01 | 101 |
| 2個 | 是的 | 2022-02-01 | 101 |
| 無效的 | 不 | 2022-03-01 | 101 |
| 1個 | 是的 | 2022-04-01 | 101 |
| 2個 | 是的 | 2022-05-01 | 101 |
| 3個 | 是的 | 2022-06-01 | 101 |
| 無效的 | 不 | 2022-01-01 | 102 |
| 1個 | 是的 | 2022-02-01 | 102 |
| 2個 | 是的 | 2022-03-01 | 102 |
| 3個 | 是的 | 2022-04-01 | 102 |
| 4個 | 是的 | 2022-05-01 | 102 |
| 5個 | 是的 | 2022-06-01 | 102 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533438.html
標籤:sqlsql服务器
上一篇:我正在嘗試運行插入陳述句,但我不斷收到訊息,零行受到影響,但沒有任何反應
下一篇:遞回CTE由經理獲取員工
