英文:
SQL MAX date based on criteria group by item
问题
项目 | 日期 | 状态列 |
---|---|---|
WidgetA | 2022-01-03 | 1 |
WidgetB | 2022-01-04 | 1 |
WidgetA | 2022-01-05 | 2 |
WidgetB | 2022-01-06 | 2 |
WidgetA | 2022-01-02 | 1 |
WidgetB | 2022-01-01 | 1 |
我想按项目分组,并在状态为1时取最小日期,在状态为2时取最大日期。
项目 | 起始日期 | 完成日期 |
---|---|---|
WidgetA | 2022-01-02 | 2022-01-05 |
WidgetB | 2022-01-01 | 2022-01-06 |
不确定从哪里开始。
英文:
Item | Date | Status Column |
---|---|---|
WidgetA | 2022-01-03 | 1 |
WidgetB | 2022-01-04 | 1 |
WidgetA | 2022-01-05 | 2 |
WidgetB | 2022-01-06 | 2 |
WidgetA | 2022-01-02 | 1 |
WidgetB | 2022-01-01 | 1 |
I want to group by Item and have min(date) where status = 1 and max(date) where status = 2
Item | start | complete |
---|---|---|
WidgetA | 2022-01-02 | 2022-01-05 |
WidgetB | 2022-01-01 | 2022-01-06 |
Not sure where to start here.
答案1
得分: 1
这可以通过条件聚合来实现:
使用 min()
获取开始日期,使用 max()
获取完成日期:
select Item,
min(case when status = 1 then Date end) as start,
max(case when status = 2 then Date end) as complete
from mytable
group by Item
这段代码适用于主要的数据库,如 mysql
和 postgresql
...
英文:
This can be done using the conditional aggregation
min()
to get the start date and max()
to get the complete date
select Item,
min(case when status = 1 then Date end) as start,
max(case when status = 2 then Date end) as complete
from mytable
group by Item
This code works on major databases such as mysql
and postgresql
...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论