匹配的銷售是由連接提供的,它讓我無法匹敵。
CTE
With PriorSalesCTE
(
Item
Variant,
Sum(sales)
Date between 7/1/2020 and 7/5/2020
),
CurrentSalesCTE
(
Item
Variant,
Sum(sales)
Date between 7/1/2021 and 7/5/2021
)
Select
SUM(cs.Sales) ‘MatchedSales’
FROM PriorSalesCTE ps join CurrentSalesCTE ps
ON cs.Item = ps.Item
And cs.Variant = ps.Variant
現在我需要兩邊的空位 我需要 2020 年售出但 2021 年未售出的商品的銷售額 -銷售 損失相反,2021 年的銷售額在 2020 年未售出 -新銷售額。
我嘗試將這些作為 CTE 的單獨部分添加到 CTE 中,但是加入并沒有給我我需要的東西。
有什么建議?CTE 是否只是阻止我獲取所有內容,并可能添加 UNION ALL 查詢以獲取不匹配的值?
uj5u.com熱心網友回復:
對于您的實際查詢,您可以使用 a FULL JOIN,它也會為您提供任何一方的結果。
但我認為還有另一種解決方案:您不需要為此加入單獨的查詢,您可以使用條件聚合
WITH SalesByItem AS (
SELECT
t.Item,
t.Variant
Sales2020 = SUM(CASE WHEN Date BETWEEN '20200701' and '20200705' THEN t.Sales END),
Sales2021 = SUM(CASE WHEN Date BETWEEN '20210701' and '20210705' THEN t.Sales END)
FROM YourTable t
WHERE (Date BETWEEN '20200701' and '20200705'
OR Date BETWEEN '20210701' and '20210705')
GROUP BY
t.Item,
t.Variant
)
SELECT
NewSales = SUM(CASE WHEN Sales2020 IS NULL THEN Sales2021 END),
MatchedSales = SUM(CASE WHEN Sales2020 IS NOT NULL AND Sales2021 IS NOT NULL THEN Sales2021 END),
LostSales = SUM(CASE WHEN Sales2021 IS NULL THEN Sales2020 END)
FROM SalesByItem s;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374186.html
