Ошибки подзапросов SQL

Используя базу данных AdventureWorks2012, мне нужно изменить приведенный ниже запрос, чтобы выбрать первые 10% заказов с CustomerId больше 500 и упорядочить заказы по TotalDue в убывающей последовательности.

 SELECT *
 FROM Sales.SalesOrderHeader h
 INNER JOIN Sales.SalesOrderDetail d 
 ON d.SalesOrderId = h.SalesOrderId

Вот две мои попытки решить проблему, но обе содержат ошибки:

  Msg 156, Level 15, State 1, Line 9
  Incorrect syntax near the keyword 'DESC'.
  Msg 156, Level 15, State 1, Line 12
  Incorrect syntax near the keyword 'FROM'.

Попытка 1

 SELECT *
 FROM SalesOrderHeader 
 WHERE SalesOrderID IN
 (SELECT TOP 10 PERCENT SalesOrderID 
 FROM SalesOrderDetail 
 WHERE SalesOrderID > 500
 ORDER BY TotalDue DESC);

Что я делаю неправильно? Спасибо.


ОБНОВЛЕНИЕ: я удалил запятую из раздела ORDER BY и смог выполнить запрос с моей первой попытки. Однако я получаю, казалось бы, бесконечную нагрузку «Успешное выполнение». Другими словами, я получаю более 3000 результатов и считаю, когда изменил запрос ниже:

    SELECT *
    FROM Sales.SalesOrderHeader 
    WHERE SalesOrderID IN
(SELECT TOP 10 PERCENT SalesOrderID 
FROM Sales.SalesOrderDetail 
WHERE CustomerID > 500
ORDER BY TotalDue DESC);

person user3047713    schedule 13.01.2014    source источник
comment
На первый взгляд, вы не ставите запятую между столбцом сортировки и направлением сортировки. Итак, вы хотите order by TotalDue DESC. Думаю, это поможет вам ответить на ваш первый вопрос.   -  person Andrew    schedule 13.01.2014
comment
Спасибо. Это помогло мне частично решить мою проблему. Выполнение запроса сработало.   -  person user3047713    schedule 13.01.2014