2012-11-22 3 views
3

У меня есть таблица с 2 столбцами. Date_Réserv е (тип Date), Heure_Réserve (тип Time)Использование «Сортировать по» дважды в одном запросе

То, что я хочу сделать, это выбрать результат, заказанный Date_Réserve, а затем Thie результате я получаю заказана Heure_Réserve.

это вопрос я попытался:

select * from (select Date_Réserve,Heure_Réserve from réserve order by Date_Réserve)t order by Heure_Réserve 

Но это дает мне эту ошибку:

The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

ответ

4

списка требуется столбцов, разделенных запятой:

select Date_Réserve, Heure_Réserve from réserve 
order by Date_Réserve, Heure_Réserve 
+0

'select *' Неправильная практика. – Oded

+0

Это было взято из запроса, написанного «Су Ша», я его не исправил. Вопрос состоял в сортировке, поэтому я отвечаю ему, как это сделать. 'SELECT *' - еще одна проблема, не связанная с этим вопросом. – psur

+1

Итак, чтобы ваш ответ был лучшим, это может быть неважно? Вы заметите, что подзапрос из OP содержит список столбцов. – Oded

5

Вам не нужно использовать ORDER BY в вашем запросе к югу - это не имеет смысла там.

Для первичной/вторичной сортировки, вы используете одинарные ORDER BY:

SELECT Date_Réserve,Heure_Réserve 
FROM réserve 
ORDER BY Date_Réserve, Heure_Réserve 
1

Один пункт, две части

select 
      Date_Réserve, 
      Heure_Réserve 
    from 
      réserve 
    order by 
      Date_Réserve, 
      Heure_Réserve 

- -

Если это только один пример, и вам действительно нужно упорядочить результаты от столбца, которые будут недоступны во внешнем запросе вы могли бы сделать,

select 
      Date_Réserve, 
      Heure_Réserve 
    from 
     (
      select 
        (ROWNUMBER() OVER ORDER BY Date_Réserve) do, 
        Date_Réserve, 
        Heure_Réserve 
       from 
        réserve 
     ) 
    order by 
      do, 
      Heure_Réserve 

, но, как вы можете видеть, что было бы бессмысленно и нецелесообразно в вашем сценарии.

2

попробовать это:

SELECT Date_Réserve, Heure_Réserve FROMréserve ORDER BY Date_Réserve ASC, Heure_Réserve ASC 
2

Если вы хотите сделать заказ более чем на один столбец:

select Date_Réserve,Heure_Réserve 
from réserve 
order by Date_Réserve, Heure_Réserve 

Если нет, то порядок в подзапроса бесполезно.

0

Вы можете использовать заказ в подзапросе при использовании оператора TOP.

select * from 
(select TOP 100 PERCENT Date_Réserve,Heure_Réserve from réserve order by Date_Réserve) t order by Heure_Réserve 
Смежные вопросы