This is mytable:
id | state | orderid | name | date
1 | Hold | 121212 | Mike | 2018-04-11
2 | Closed | 121213 | Homer | 2018-04-12
3 | Open | 121214 | Mike | 2018-04-13
4 | Hold | 121215 | Bart | 2018-04-14
5 | Open | 121216 | Lisa | 2018-04-15
6 | Closed | 121217 | Bart | 2018-04-16
7 | Closed | 121218 | Homer | 2018-04-17
I'm trying to order by state (open, hold, close), then date (ASC), if the state is "closed", then date (DESC). So a result like this.
id | state | orderid | name | date
3 | Open | 121214 | Mike | 2018-04-13
5 | Open | 121216 | Lisa | 2018-04-15
1 | Hold | 121212 | Mike | 2018-04-11
4 | Hold | 121215 | Bart | 2018-04-14
7 | Closed | 121218 | Homer | 2018-04-17
6 | Closed | 121217 | Bart | 2018-04-16
2 | Closed | 121213 | Homer | 2018-04-12
This is the query I have now:
SELECT * FROM mytable ORDER BY FIELD(state,'Open','Hold','Closed') ASC, o_date DESC
Have attempted to add the examples given here: Can you add an if statement in ORDER BY? but I'm not getting the results I want.
Any ideas?