簡體   English   中英

如果右側表中不存在日期,則使用 LEFT JOIN 返回 NULL

[英]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.

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