SQL GROUP BY для подзапроса

У меня есть запрос, который вернет результаты из 2 таблиц в 1, используя UNION ALL, и все это работает так, как мне нужно. Однако мне нужно запустить GROUP BY и ORDER BY для возвращенного набора данных, однако я получаю много ошибок и не знаю, как их решить.

Вот мой запрос:

SELECT ProductID, Quantity 
FROM BasketItems 
UNION ALL 
SELECT ProductID, Quantity 
FROM OrderItems

Это вернет набор результатов, такой как этот:

ProductID  Quantity  
15         2
20         2
15         1
8          5
5          1

Затем я хочу запустить GROUP BYв поле ProductID, а затем, наконец, ORDER BY DESCв поле Quantity. Таким образом, в окончательном выводе этот конкретный набор результатов, наконец, приведет к этому:

ProductID
8
15
20
5

Затем я могу выполнять запросы к этому набору результатов, как обычно

РЕДАКТИРОВАТЬ:

Как указано выше, но, возможно, недостаточно подразумевается, что мне нужно будет выполнять запросы к возвращенным результатам, что не работает, поскольку вы не можете выполнить запрос к набору результатов, которые имеют предложение ORDER BY (до тех пор, пока Я собрал из списка ошибок)

Если вам нужна дополнительная информация о проблеме, вот она:

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

SELECT * FROM Products WHERE ID IN (
    SELECT ProductID
    FROM
    (
        SELECT ProductID, Quantity  
        FROM BasketItems  
        UNION ALL  
        SELECT ProductID, Quantity  
        FROM OrderItems 
    ) v
    GROUP BY ProductID
    ORDER BY SUM(Quantity) DESC
) 

. Однако я получаю эту ошибку :Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных таблицах, подзапросах и общих табличных выражениях,если также не указаны TOP, OFFSET или FOR XML.

Вывод продуктов должен быть в том порядке, в котором они возвращаются в подзапросе (По количеству)

7
задан JakeJ 8 August 2012 в 11:04
поделиться