1
所以我有這個作爲一個直接的方式來獲得一個日期範圍內前10名的銷售項目:在SQL我怎樣才能獲得資金用於兩套日期範圍
SELECT TOP 10 Sku, Title, SUM(Qty) as SoldQty, COUNT(Qty) as SalesCount
FROM Sales
WHERE SaleDate BETWEEN @StartDate AND @EndDate
GROUP BY Sku, Title
ORDER BY SUM(Qty) DESC
現在我想要的是二更多專欄顯示SoldQty和SalesCount相同的日期範圍前30天或前一年等我試圖避免循環或多次旅行服務器,如果可能的話。
我想這將是某種形式的這樣:
SELECT TOP 10 Sku, Title, SUM(Qty) as SoldQty, COUNT(Qty) as SalesCount
FROM Sales
WHERE Sku IN
(
SELECT TOP 10 Sku
FROM Sales
WHERE SaleDate BETWEEN @StartDate AND @EndDate
GROUP BY Sku
ORDER BY SUM(Qty) DESC
)
AND SaleDate BETWEEN @StartDate AND @EndDate
GROUP BY Sku, Title
ORDER BY SUM(Qty) DESC
但我想不出如何使用一套IN子句中創建,以獲得其他數據,我需要。
我想可能工作的另一種方式是在SKU可以這樣引用:
SELECT TOP 10 Sku as TopSku, Title, SUM(Qty) as SoldQty, COUNT(Qty) as SalesCount,
(
SELECT SUM(Qty)
FROM Sales
WHERE Sku = TopSku
AND SaleDate BETWEEN DATEADD(DAY, -30, @StartDate) AND DATEADD(DAY, -30, @EndDate)
) as PrevSoldQty,
(
SELECT Count(Qty)
FROM Sales
WHERE Sku = TopSku
AND SaleDate BETWEEN DATEADD(DAY, -30, @StartDate) AND DATEADD(DAY, -30, @EndDate)
) as PrevSalesCount
FROM Sales
WHERE SaleDate BETWEEN @StartDate AND @EndDate
GROUP BY Sku, Title
ORDER BY SUM(Qty) DESC
在正確的方向上的任何一點就好了。