我有一个查询,在这个查询中我联接多维表来创建事实表。对于外键为null的情况,我希望将其指向维度表中添加的默认伪记录,以便字段中没有null值。怎么可能。请帮忙。
Select
a.name,
a.id_no,
d.dealer_name,
d.address
from
contract a
left join dealer b
on a.con_id=b.con_id
在上面的例子中,当b.con\u id为空并且在这种情况下没有找到匹配项时,我想指向添加在dealer表中的默认外键(0)。它就像如果fk为null,则使用默认fk并使用这些记录填充字段
4条答案
按热度按时间ltqd579y1#
您可以采取确保每个维度表都有一个默认行的方法,比如
-1
作为值:然后在大多数数据库中,可以将引用声明为:
然而,我认为Hive(还)不支持
default
列上的值。所以,可以这样做,但是需要显式地插入-1
在引用表中插入新行时。rbl8hiat2#
你可以用
ISNULL()
在您的查询中。例如:
3mpgtkmj3#
可以用默认值替换未联接的记录,如下所示:
或使用con\u id=0函数添加第二个连接:
ifsvaxew4#
您可以将它保持为null,也可以将事实记录指向一个显示没有引用的伪记录(id<0表示它)。