我目前正在填充事实表。我已经填充了维度表。我已经填充了事实表中的两个列(time
,abandoned
),但我正在努力填充第三个维度键,即call type
键。这样做的原因是有许多属性需要计算才能计算出密钥。
维度表适用于呼叫工作类型。它有三列,分别是:
CallWorkTypeID - CallWorkTypeCode - CallWorkTypeName.
示例值
1 - OutAttemp - Outbound Attempt
我遇到的问题是计算出呼叫类型名称,这里是一个用于计算名称的示例代码,例如,它选择出站尝试呼叫。
SELECT * from outgoing_measure om
WHERE om.CTICallType_ID = 3
AND om.CTIAgentCallType_ID = 1
AND om.Abandoned = 1
AND om.AnsTime IS NULL
AND om.CallState IS NULL
有19种不同的情况,具有相同的列,但每个呼叫类型的值都在变化。
有人有任何想法吗?我认为可能是CASE语句,但不确定代码如何在连接上起作用。
答案 0 :(得分:0)
如果您还没有映射表或规则表来帮助您,CASE语句对此非常有用。如果维度成员已放入维度表,则无需进行任何连接。你可以把它们放在盒子里。
UPDATE f
set thirddimensionforeignkey = CASE
WHEN (cticalltype = 3 and all that other stuff is true) THEN 1
WHEN (some other stuff is true) THEN 2
WHEN (rest of the stuff is true) THEN 19
--ELSE unknownmember
END
FROM yourfacttable as f