[英]Setting the ID in a fact table from a dimension table
在我的被遗弃呼叫的维度表中,我具有ID 1代码NO,ID 2代码YES。我想基于是否使用联接放弃了呼叫,将这些ID加载到事实表中。
我遇到的问题是数据库中的Abandoned值是否为NULL,否为1。
所以当我加入
INNER JOIN datamartend.dbo.Abandoned_Call_Dim
ON incoming_measure.Abandoned = Abandoned_Call_Dim.abandoned_code
没有结果吗?
有什么想法吗?
基本上需要的是:
如果度量中的放弃值是null,我希望放弃维度中的放弃ID为2,如果不为null,则希望放弃ID为2
谢谢
您可以使用CASE WHEN子句解决此问题(或ISNULL,但这种情况在不同的DB引擎之间更具可移植性)
INNER JOIN datamartend.dbo.Abandoned_Call_Dim
ON case when incoming_measure.Abandoned is null then '0'
else incoming_measure.Abandoned end
= case when Abandoned_Call_Dim.abandoned_code is null then '0'
else Abandoned_Call_Dim.abandoned_code end
这会将空值替换为0。只要您没有0码,就可以了。 如果这样做,请尝试-1或其他您可能不知道的值。
如果您有一组未知的代码,则要做的另一件事是进行联接并添加:
OR (incoming_measure.Abandoned is null and Abandoned_Call_Dim.abandoned_code is null)
从技术上讲,这并不会联接-它会交叉联接null记录(并且只要在废弃的调用dim上只有一个null有意义,就可以了)。
是否可以在进行加入之前检查是否可以对ID使用解码功能。
解码(值)=连接列
或尝试使用COALESCE(REPLACE(COL,VAL_TO_B_REPLACE_IF_NOT_NULL),VALUE_TO_REPLCE_WHEN_NULL)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.