簡體   English   中英

從 SQL Server 中的同一表中選擇上個月的已售和未售產品

[英]Select Sold and unsold product from same table in SQL Server for last month

我有數據庫表並嘗試編寫查詢以從一張表中查找已售和未售產品列表。

表如下

在此處輸入圖片說明

期待結果

在此處輸入圖片說明

我如何得到這個結果? 我正在使用 CTE 創建 Tamp 表和所有服務,然后進行左連接,但它只給我 2 月份出售的產品,但我也希望所有產品都沒有銷售。

您可以交叉連接產品和日期,然后將表帶left join

select 
    p.product,
    t.quantity_sold,
    d.yr,
    d.mn
from (select distinct product from mytable) p
cross join (select distinct yr, mn from mytable) d
left join mytable t
    on  t.product = p.product
    and t.yr = d.yr
    and t.mn = d.mn

這將為沒有銷售的行放置null s - 這可能是一個數字列,因此您通常不想在其中寫入諸如'Not Sold'類的字符串。

如果有可能重復(product, yr, mn) ,您可能需要使用外部聚合:

select 
    p.product,
    sum(t.quantity_sold) quantity_sold,
    d.yr,
    d.mn
from (select distinct product from mytable) p
cross join (select distinct yr, mn from mytable) d
left join mytable t
    on  t.product = p.product
    and t.yr = d.yr
    and t.mn = d.mn
group by p.product, d.yr, d.mn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM