我们有如下客户订单表;
SELECT [pk]
,[FileName]
,[Order_No]
,[SKU]
,[Qty]
FROM [Data].[dbo].[client]`
我是 SQL 新手,我被要求按文件名显示 1 个 sku 的订单数,然后显示 2 个 sku 的订单数,然后显示 3 个 sku 的订单数,等等
像下面这样
我一直在玩,但我不知道如何可视化它。
我已经尝试过以下方法;
SELECT [FileName]
,Order_no
,COUNT(SKU) as 'Total SKU'
,SUM(Qty) as 'Qty Total'
FROM [Warehouse].[dbo].[client]
GROUP BY Order_no, [FileName]
HAVING COUNT(SKU) = 1 AND SUM(Qty) = 1
ORDER BY Order_no
但它仅适用于 1 个 SKU - 我不确定如何构建查询来显示 SKU 数量的总订单。我考虑过使用临时表,但我再次无法想象这会有什么帮助。
如果没有适当的样本数据和预期结果,很难说,但我认为这里需要两个级别的聚合。
SELECT
c.FileName,
c.DistinctSkus,
COUNT(*) AS NumOrders,
SUM(c.QtyTotal) AS QtyTotal
FROM (
SELECT
COUNT(DISTINCT c.SKU) AS DistinctSkus,
SUM(c.Qty) AS QtyTotal
FROM dbo.client c
GROUP BY
c.FileName,
c.Order_no
) c
GROUP BY
c.FileName,
c.DistinctSkus;