如何基于特定值启动row_number(),无值时按业务规则生成序号?
问题:获取员工处理文档的起始记录
我有一张记录员工处理文档信息的数据表,不同员工可在同一天处理同一文档。需要获取两类记录:
- 员工点击系统“开始”按钮(
process_type字段值为1)时的处理起始日期与时间 - 未处理该文档的员工信息(即无
process_type值的情况)
主表数据示例
| doc_id | employee_name | process_datetime | process_type |
|---|---|---|---|
| 1 | Alice | 2023-10-01 09:00:00 | 1 |
| 1 | Alice | 2023-10-01 09:30:00 | 2 |
| 1 | Bob | 2023-10-01 10:00:00 | 2 |
| 1 | Charlie | (null) | (null) |
期望结果
(row=1代表事件的起始)
| doc_id | employee_name | process_datetime | row |
|---|---|---|---|
| 1 | Alice | 2023-10-01 09:00:00 | 1 |
| 1 | Bob | (null) | 1 |
| 1 | Charlie | (null) | 1 |
尝试过的方法及问题
我使用过row_number() over(partition by ...)语法,还结合过WHERE子句或CASE WHEN语句,但每当员工姓名变更时,就会生成row=1的记录,不符合预期需求。
内容的提问来源于stack exchange,提问作者Dub2Dub
相关产品推荐
相关产品推荐

