Получение и упорядочение строк со значением больше нуля, затем строки со значением ноль

У меня есть таблица, подобная этой

id    title    display_order
1     t1       3
2     t2       1
3     t3       5
4     t4       4
5     t5       2
6     t6       0
7     t7       7
8     t8       6
9     t9       0
10    t10      0

Что мне нужно, так это иметь результаты, подобные этой

id    title    display_order
2     t2       1
5     t5       2
1     t1       3
4     t4       4
3     t3       5
8     t8       6
7     t7       7
...order of the rest is not important but should be in the result
6     t6       0
9     t9       0
10    t10      0

Я могу получить этот результат с двумя запросами SQL, а затем объединить их.

Есть ли способ сделать это с одним SQL?

Спасибо

-121--1318082- Объединение результатов двух различных агрегатных функций в одной таблице Я пытаюсь объединить два запроса, чтобы определить, какой самолет будет находиться в определенной точке (точка ABCD) непосредственно перед определенным временем (2011-09-19 04:00: 00.000). Пока что я генерирую последнюю...

Я пытаюсь объединить два запроса, чтобы определить, какой самолет будет находиться в определенной точке (точка ABCD) непосредственно перед определенным временем (2011-09-19 04:00: 00.000). Пока что я генерирую последний раз, когда самолет прибыл в этот пункт, и последний раз, когда самолет вылетал из пункта. Моя нынешняя идея заключается в том, что если последний раз, когда он прибыл больше, то последний раз, когда он покинул самолет, все еще находится в точке ABCD непосредственно перед указанным временем.

Первый запрос находит последний раз, когда самолет прибыл в определенную точку:

select aircraft_id, MAX(arrival_datetime) as last_arrival
from flight_schedule
where arrival_datetime < '2011-09-19 04:00:00.000' and arrival_point='ABCD'
group by aircraft_id

, а второй запрос находит последний раз, когда самолет вышел из этой точки:

select aircraft_id, MAX(departure_datetime) as last_departure
from flight_schedule
where departure_datetime < '2011-09-19 04:00:00.000' and departure_point='ABCD'
group by aircraft_id

Оба этих запроса генерируют соответствующие ответы. Я понимаю, что для сравнения last_departure с last_arrival полями мне нужно как-то присоединиться к таблицам.

Я не SQL whiz, и в прошлом все объединения таблиц, которые я делал, были между двумя совершенно разными таблицами и не участвовали в каких-либо агрегатных функций, поэтому мои обычные подзапросы и структура не работали.

6
задан djlumley 3 October 2011 в 07:10
поделиться