内部加入BETWEEN两个值

时间:2013-03-31 17:26:41

标签: sql-server join operators inner-join

我目前正在尝试填充我的事实表,但我无法填充所需的时间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

感谢您的帮助。

1 个答案:

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