8

我目前正在尝试填充我的事实表,但在填充所需的时间 ID 时遇到了问题。时间维度已完全填充且完整。基本上在时间维度上,每一行是一个 15 分钟的周期。事实表正在填充有关调用的详细信息。在临时呼叫表中,我有呼叫的开始和结束时间。

我想通过在时间开始时加入临时表上的维度来填充事实表,并且当维度中的 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

谢谢您的帮助。

4

1 回答 1

7

编辑:

您的加入不正确。您的加入格式应为:

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

您可以使用<and>运算符

此外,因为使用格式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
于 2013-03-31T17:29:51.217 回答