I'm working with a table called du_vertrag
, and I'm trying to build a query that selects distinct values for id
and status
pairs.
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | beantragt | 20201008 |
6387891 | beantragt | 20201008 |
6251899 | übergabe | 20201009 |
6377042 | übergabe | 20201009 |
6387891 | übergabe | 20201009 |
6251899 | übergabe | 20201010 |
6377042 | übergabe | 20201010 |
6387891 | übergabe | 20201010 |
6251899 | aktiv | 20201024 |
6377042 | aktiv | 20201024 |
6387891 | aktiv | 20201024 |
Desired Output:
id | status | date |
---|---|---|
6251899 | beantragt | 20201008 |
6377042 | beantragt | 20201008 |
6387891 | beantragt | 20201008 |
6251899 | übergabe | 20201009 |
6377042 | übergabe | 20201009 |
6387891 | übergabe | 20201009 |
6251899 | aktiv | 20201024 |
6377042 | aktiv | 20201024 |
6387891 | aktiv | 20201024 |
I need for every id the new status with the first datetime the status changed.
CodePudding user response:
This appears to be simple aggregation
select id, status, min(date) as date
from du_vertrag
group by id, status;
CodePudding user response:
SELECT * FROM (SELECT id, status, row_number() over (partition by id, status order by date asc) as row_num FROM du_vertrag ) d where d.row_num = 1