【发布时间】:2015-01-17 09:05:40
【问题描述】:
我对使用 sql 有疑问,我无法理解。
我有一个包含 2 列(in_time、out_time)和以下记录的主表(时钟)。
2017-01-17 06:00:00.000 to 2017-01-17 07:00:00.000
2017-01-17 09:00:00.000 to 2017-01-17 11:00:00.000
2017-01-17 17:00:00.000 to 2017-01-17 20:00:00.000
然后我有第二个查找表(班次),它也有 2 个日期时间列。 (shiftstart,shiftend)
2015-01-17 06:00:00.000 to 2015-01-17 16:00:00.000
2015-01-17 18:00:00.000 to 2015-01-17 23:00:00.000
我想要实现的是显示与我的主表 (clockins) 的总分钟差,其中 in_time 位于第二个表中的日期之间。
我尝试使用“between”进行子查询,但班次表有超过 1 条记录我必须检查。我尝试的另一个解决方案是在班次表上使用循环,然后仅使用基于班次表中每条记录的选择查询。这可行,但我可以看到这变得非常缓慢。
根据以上信息,应该返回时钟表的第 1 行和第 2 行,结果为 3 小时 = 180 分钟,并省略记录 2017-01-17 17:00:00.000
我希望这是有道理的。
【问题讨论】:
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?
-
欢迎来到 StackOverflow!无需在标题中包含标签。请阅读meta.stackexchange.com/questions/19190/… 了解更多信息。
-
两个表之间是否有共同的字段,比如
shiftId? -
是的,抱歉,这是一个错字 - 都是 2015 年的。我使用的是 MS SQL Server 2008。我会查看您的帖子并提供反馈。谢谢
标签: sql sql-server