skip to Main Content

How can I select data from my SQL table which look like this:

| Title | Date      | Active |
| A     | 2022-02-01| 1|
| B     | 2022-01-01| 1|
| C     | 2022-04-01| 1|
| A     | 2021-02-01| 0|
| B     | 2021-03-01| 0|
| C     | 2020-04-01| 0|

So result should look like this:

| Title | Date      | Active |
| B     | 2022-01-01| 1|
| B     | 2021-03-01| 0|
| A     | 2022-02-01| 1|
| A     | 2021-02-01| 0|
| C     | 2022-04-01| 1|
| C     | 2020-04-01| 0|

Order first by date and group by title, and active first. GROUp BY date, title, active gives me order by date only.

2

Answers


  1. If I understand correctly, you want to order by the minimum date per title group ascending, followed by the Active column descending. We can use:

    SELECT Title, Date, Active
    FROM yourTable
    ORDER BY MIN(Date) OVER (PARTITION BY Title), Active DESC;
    
    Login or Signup to reply.
  2. Assuming this is to track the chaning of active/inactive by date on these objects – Try:

    ORDER BY TITLE ASC, DATE DESC
    

    Partition would also work but I don’t think it’s necessary for this specific example.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search