我目前正在尝试填充我的事实表,但我无法填充所需的时间ID。时间维度已完全填充并完整。基本上在时间维度上,每行是15分钟。事实表填充有关调用的详细信息。在暂存呼叫表中,我有呼叫的开始和结束时间。
我想通过在时间开始时加入staging表上的维度以及维度中的time_Start在暂存中的开始和结束时间之间来填充事实表。我已经运行了下面的查询使用=运算符,但它似乎不起作用,只有当我期望更像4000时才会拉出100行。我可以使用BETWEEN而不是=?
INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start BETWEEN incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate
感谢您的帮助。
答案 0 :(得分:6)
修改强>
您的加入不正确。您的加入格式应为:
Select column from table A
INNER JOIN table b on
A.column = B.column
INNER JOIN table c on
B.column = c.column
Where B.column Between start_date AND end_date
您可以使用<
和>
运算符
此外,对于sqlserver
,使用yyyy-mm-dd
格式
INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start > incoming_measure.StartTimeDate AND Time_Start < incoming_measure.EndTimeDate
您也可以使用Between
INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start Between incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate