SQL查询需求:按status列筛选有效ID记录,排除状态'I'后的后续记录
需求说明
获取状态为活跃(status='A')的ID记录,需遵循以下规则:
- 同一ID下,若出现状态
'I',则排除该'I'之后的所有记录 - 仅保留ID下
'I'出现之前的'A'状态记录;若ID从未出现'I',则保留所有'A'状态记录
输入数据
| id | start_date | end_date | status |
|---|---|---|---|
| 1000000278 | 8/25/2021 | 8/25/2022 | I |
| 1000000278 | 8/25/2022 | 8/25/2023 | A |
| 1000000284 | 8/20/2021 | 8/25/2022 | A |
| 1000000284 | 8/25/2022 | 8/25/2023 | A |
| 1000000285 | 8/20/2024 | 8/20/2028 | A |
| 1000000285 | 8/21/2028 | 8/20/2030 | I |
| 1000000285 | 8/21/2030 | 8/20/2031 | A |
| 1000000286 | 8/25/2021 | 8/25/2022 | A |
输出结果
| id | start_date | end_date | status |
|---|---|---|---|
| 1000000284 | 8/20/2021 | 8/25/2022 | A |
| 1000000284 | 8/25/2022 | 8/25/2023 | A |
| 1000000285 | 8/20/2024 | 8/20/2028 | A |
| 1000000286 | 8/25/2021 | 8/25/2022 | A |
内容的提问来源于stack exchange,提问作者Akanksha Srivastava
相关产品推荐
相关产品推荐

