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