sql-server - 两个值之间的内连接

标签 sql-server join operators inner-join

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

相关文章:

sql - 如何选择列值为空的行?

mysql - 在启用 RPC 的情况下,使用 OPENQUERY() 删除行时出现问题(区分大小写)

sql - SQLITE中意外的LEFT OUTER JOIN行为

Mysql连接和拼接

c - 哪个运算符更快(> 或 >=)、(< 或 <=)?

perl - 了解 perl 的赋值或运算符与赋值和逻辑或运算符的组合之间的行为差​​异

java - 从字符串中获取运算符符号

sql - 来自查询的单个 SQL Server 结果集

sql - 在 SQL Server 中使用 FOR XML PATH 查询以获取分层数据的 XML 输出

sql - Rails 3 与 PostgreSQL : Problem with 'update_all' in joined table