将维度ID加入事实表

时间:2013-04-03 10:52:18

标签: sql sql-server database case

我目前正在填充事实表。我已经填充了维度表。我已经填充了事实表中的两个列(timeabandoned),但我正在努力填充第三个维度键,即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语句,但不确定代码如何在连接上起作用。

1 个答案:

答案 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