我目前正在尝试填充我的事实表,但在填充所需的时间 ID 时遇到问题。时间维度已完全填充且完整。基本上在时间维度中,每一行都是 15 分钟的时间段。事实表正在填充有关调用的详细信息。在暂存调用表中,我有调用的开始和结束时间。
我想通过在开始时间和维度中的 time_Start 位于暂存的开始时间和结束时间之间时连接暂存表上的维度来填充事实表。我运行了下面的查询使用 = 运算符,但它似乎不起作用,并且只提取 100 行,而我应该期望更多,例如 4000 行。我可以使用 BETWEEN 而不是 = 吗?
INNER JOIN Time_Dim ON incoming_measure.StartTimeDate = Time_Start
WHERE Time_Start BETWEEN incoming_measure.StartTimeDate AND incoming_measure.EndTimeDate
感谢您的帮助。
最佳答案
编辑:
您的加入不正确。您的加入格式应为:
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
关于sql-server - 两个值之间的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732280/