各位前輩大家好,小弟使用MSSQL2016
現有一產品庫存table,欄位有產品名稱、庫存數量、更新日期,資料固定每月1日12時備份一次,已經有三年的資料2018~2020,每個月產品庫存不一定會存在,有時候當月會出清,隔幾個月有可能會再補貨進來,我想下一個查詢,呈現「這三年」所有的「產品名稱」,於2020年1~12月庫存剩餘多少,沒有庫存的以0表示,實在想破頭不知道怎麼下,初步是開一個查詢a把所有產品先查出不重複的view再去關聯b查詢2020的規格有哪些帶出數量,不知道還有沒有更好的方法,謝謝
不知道我理解是否正確?
聽起來你是要 select 所有產品的庫存,但是如果 where 日期,會造成某些產品跟著消失。
select * from table where '2020/1/1' <= date AND date < '2021/1/1'
其實你也講出解法了,就是關聯。這在業界是很平常的。
select a.name, a.date, ISNULL(b.quantity, 0)
from table a
left JOIN (select * from table where '2020/1/1' <= date AND date < '2021/1/1') b
on a.Name = b.name;