【发布时间】:2022-01-24 17:35:15
【问题描述】:
我有一个流程阶段,我需要找出它们何时发生。不幸的是,我只能通过文本提取来做到这一点。 我已经提取了与相关文本列中找到的阶段相匹配的日期。不幸的是,一些文本值相似并且被错误地输入到表中,因此提取的日期被重复。 我无法编辑现有表,但是,我正在尝试根据我正在执行的操作(文本提取、日期排序等)创建一个新表。 我需要确保日期没有混淆并且是连续的。例如第 1 阶段的日期早于第 2 阶段等...
数据样本
| Person_ID | Stage | Stage_Num | Stage_Date |
|---|---|---|---|
| 1 | Stage-1 | 1 | 2020-01-01 |
| 1 | Stage-1 | 1 | 2021-02-02 |
| 1 | Stage-2 | 2 | 2020-05-01 |
| 1 | Stage-2 | 2 | 2020-05-06 |
| 1 | Stage-1-R | 3 | 2021-02-02 |
| 1 | Stage-1-R | 3 | 2020-01-01 |
我期待的最终结果是
| Person_ID | Stage | Stage Num | Stage_Date |
|---|---|---|---|
| 1 | Stage-1 | 1 | 2020-01-01 |
| 1 | Stage-2 | 2 | 2020-05-01 |
| 1 | Stage-1-R | 3 | 2021-02-02 |
我尝试了以下方法:
select a.person_id,a.stage, a.stage_num, min(a.stage_date)
from
all_activity_dates a join all_activity_dates b
where
a.stage_num<=b.stage_num
and a.stage_date<b.stage_date
group by
a.person_id, a.stage, a.stage_num
order by stage_num
但是,第 1 阶段和第 3 阶段的结果日期是相同的。 如何正确执行?
UPD1致结束我问题的人:我不能简单地按 STAGE 选择最小值和分组(我绝对知道该怎么做) 在我最初的问题中,我声明我需要连续订单,但是使用简单的 MIN DATE STAGE 1 和 STAGE 3 将具有相同的 DATE ,但 STAGE 3 必须在 STAGE 2 之后。
UPD2另外,对于我缺少提取日期的阶段,我需要在前一阶段和下一阶段之间添加一个随机日期
如果它是重复的,我很高兴检查一个有效的解决方案,我只是找不到类似措辞的问题
【问题讨论】:
-
对于每个阶段,您是否希望最早的日期晚于早期阶段的任何日期?您是否正在寻找可以处理多个阶段(不仅仅是 3 个阶段)的查询?