[英]Return NULL if date is not exists in right side table using LEFT JOIN
我有 2 個表表 1:M1
----------------------------------------------------------------------------
propertyId productId
----------------------------------------------------------------------------
041E09A8-BB30-4555-91AC-E366AFD4DD79 B20D2D1E-C6D2-4821-B58D-B031E737B732
E46F20AC-9AF7-43BB-AC06-79BF61C8E8B1 B20D2D1E-C6D2-4821-B58D-B031E737B732
表 2:M2
------------------------------------------------------------
propertyId startdate volume
------------------------------------------------------------
041E09A8-BB30-4555-91AC-E366AFD4DD79 2019-06-20 5
E46F20AC-9AF7-43BB-AC06-79BF61C8E8B1 2019-06-20 10
041E09A8-BB30-4555-91AC-E366AFD4DD79 2019-06-21 15
預期的輸出應該是這樣的(即使該期間不存在“propertyid”也應該返回空)
--------------------------------------------------------------------
propertyId startdate volume
--------------------------------------------------------------------
041E09A8-BB30-4555-91AC-E366AFD4DD79 2019-06-20 5
E46F20AC-9AF7-43BB-AC06-79BF61C8E8B1 2019-06-20 10
041E09A8-BB30-4555-91AC-E366AFD4DD79 2019-06-21 15
E46F20AC-9AF7-43BB-AC06-79BF61C8E8B1 NULL NULL
這里 propertyid 'E46F20AC-9AF7-43BB-AC06-79BF61C8E8B1' 沒有日期 '2019-06-21' 的記錄。 請你幫助我好嗎 ?
這看起來像一個cross join
來生成行,然后一個left join
來引入值:
select m1.propertyid, d.startdate, m2.volume
from m1 cross join
(select distinct startdate from m2) d left join
m2
on m2.startdate = d.startdate and m2.propertyid = m1.propertyid
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.