内部加入BETWEEN两个值

Ric*_*d C 7 sql-server join inner-join operators

我正在尝试填充我的事实表,我在填写所需的时间ID方面遇到了麻烦.时间维度已完全填充并完整.基本上在时间维度上,每行是15分钟.事实表填充有关调用的详细信息.在暂存呼叫表中,我有呼叫的开始和结束时间.

我想通过在时间开始时加入staging表上的维度以及维度中的time_Start在staging中的开始和结束时间之间来填充事实表.我已经使用=运行了下面的查询运算符,但它似乎没有工作,只有当我应该期望更像4000时才拉出100行.我可以使用BETWEEN而不是=?

INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start BETWEEN incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Wha*_*ied 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
Run Code Online (Sandbox Code Playgroud)

您可以使用<和>运算符

此外,因为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
Run Code Online (Sandbox Code Playgroud)

你也可以使用 Between

INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start Between incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate
Run Code Online (Sandbox Code Playgroud)