У меня есть запрос, который вернет результаты из 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.
Вывод продуктов должен быть в том порядке, в котором они возвращаются в подзапросе (По количеству)