2016-10-27 3 views
1

У меня есть две серии сообщений. У каждого сообщения есть определенный процент прогресса (project_percent) и время окончания (end_date). Я хочу сначала показывать сообщения с end_date в будущем ('DESC'), и после этого хочу показать проект с end_date в прошлом порядке на проценты. Как я могу сделать это только с одним запросом?Сортировка по умолчанию:

(Если дата не проходит процентов не имеет значения, и только дата важна, но если дата прошла, я хочу сортировать по процентов)

select * from posts ...

-------------------------------------- 
| post | end_date | project_percent| 
| P1  | 28-10-2016| 50   | 
| P2  | 26-10-2016| 40   | 
| P2  | 30-10-2016| 20   | 
| P3  | 24-10-2016| 75   | 

* сегодня 27-10-2016

Я хочу выход должен быть таким:

-------------------------------------- 
| post | end_date | project_percent| 
| P2  | 30-10-2016| 20   | 
| P1  | 28-10-2016| 50   | 
| P3  | 24-10-2016| 75   | 
| P2  | 26-10-2016| 40   | 

* Первые два сортируется по дате, а вторые два отсортированных по persent

+0

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. –

+0

Вы имеете в виду «хотел бы»? – Strawberry

+0

Итак, вы хотели бы сначала заказать 'end_date', а затем' percent'? – BenM

ответ

1

Дайте это попробовать:

select *, end_date < now() as flag from posts 
order by flag 
, case when flag = 0 then end_date end desc 
, case when flag = 1 then project_percent end desc; 

мог бы сделать его проще с помощью

select * from posts 
order by 
    case when end_date < now() = 0 then end_date end desc 
    , case when end_date < now() = 1 then project_percent end desc; 

но первая версия лучше для отладки.

+0

Greate! Спасибо. –

Смежные вопросы