我有一个查询,它将使用 UNION ALL 将 2 个表的结果返回到 1 个表中,这一切都按我的需要工作。但是我需要在返回的数据集上运行 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。
产品的输出需要按照子查询中返回的顺序(按数量)