假设我有一张table:
+--------+-----------+----------+
|style_id|SegmentName|StyleViews|
+--------+-----------+----------+
|1 |Z |1 |
|1 |X |2 |
|2 |Z |1 |
|1 |Y |2 |
|3 |Y |1 |
|3 |X |1 |
+--------+-----------+----------+
我们称之为表1
还有一张table:
+-----------+
|allsegments|
+-----------+
|X |
|Y |
|Z |
+-----------+
我们称之为表2
如何达到这样的输出:
+--------+-----------+----------+
|style_id|SegmentName|StyleViews|
+--------+-----------+----------+
|1 |X |2 |
|1 |Y |2 |
|1 |Z |1 |
|2 |X |0 |
|2 |Y |0 |
|2 |Z |1 |
|3 |X |1 |
|3 |Y |1 |
|3 |Z |0 |
+--------+-----------+----------+
从本质上讲,如果表1和表2连接时不匹配,则必须在适当的位置添加0。
似乎是一个很简单的问题,但我尝试了各种连接,如全外,左外,右外,但我不能完成我想要的。在此方面的任何帮助都将不胜感激。
我试图在sparksql中实现这一点,但是我认为这个问题是一个一般的sql问题。
1条答案
按热度按时间46scxncf1#
使用
cross join
生成行和left join
引入价值观: