【发布时间】:2019-01-02 03:41:56
【问题描述】:
我想显示哪些订单包含两个以上的产品?
显示订单号、订单价值和订单包含的产品数量。
仅供参考,我添加了 2 个额外的列,因为结果会更好看。
WITH RESULTS AS
(
SELECT
*,
COUNT(O2.SalesOrderID) OVER (PARTITION BY O2.SalesOrderID) AS COUNTS
FROM
AdventureWorks2014.Sales.SalesOrderDetail AS O2
-- WHERE COUNTS > 1
-- ORDER BY SalesOrderID ASC
)
SELECT
O.SalesOrderID,
p.Name, P.ProductID, R.COUNTS as [Products Amount],
R.LineTotal, R.OrderQty
FROM
RESULTS AS R
INNER JOIN
AdventureWorks2014.Sales.SalesOrderDetail AS O ON R.SalesOrderID = O.SalesOrderID
RIGHT JOIN
AdventureWorks2014.Production.Product as P ON P.ProductID = R.ProductID
WHERE
R.COUNTS > 1
ORDER BY
O.SalesOrderID ASC
【问题讨论】:
-
请提供一个最小、完整和可验证的示例 (MCVE) meta.stackoverflow.com/questions/333952/…
-
SQL Server 为数据和查询返回正确的结果。如果它返回了意外的东西,那就是查询和/或数据假设的问题。在 SO 上没有什么可以“确认”的。
-
大家好,我在查询中添加了一张图片,显示了我添加连接时出现的问题
-
我做对了,我将连接移动到包含计数的 RESULTS 查询,然后在 COUNTS 上放置一个 where 子句并完成工作
标签: sql-server