【发布时间】:2016-10-13 15:11:10
【问题描述】:
我在 SQL Server 中工作。我有三个表,TableA、TableB 和 TableMain,以及 Date、StartTime 和 FinishTime 列。
我必须编写一个 SQL 语句,它必须从 TableMain 中提取这三个列值。如果TableA 中存在相同的日期,则StartTime 值应该来自它,否则只需使用来自TableMain 的值。同样,如果FinishTime 出现在TableB 中,那么在最终输出中,该值应替换TableMain 中的值。
我想通过加入这三个表来做到这一点。下面展示了这三个表中的数据以及最终预期的查询输出。
表A:
Date StartTime
10/14/2016 11:00 AM
10/16/2016 10:00 AM
10/18/2016 11:30 AM
表B:
Date FinishTime
10/15/2016 3:00 PM
10/16/2016 4:00 PM
10/17/2016 6:30 PM
10/18/2016 5:00 PM
TableMain:
Date StartTime FinishTime
10/14/2016 8:00 AM 10:00 PM
10/15/2016 8:00 AM 10:00 PM
10/16/2016 8:00 AM 10:00 PM
10/17/2016 8:00 AM 10:00 PM
10/18/2016 8:00 AM 10:00 PM
期望的输出:
10/14/2016 11:00 AM 10:00 PM
10/15/2016 8:00 AM 3:00 PM
10/16/2016 10:00 AM 4:00 PM
10/17/2016 8:00 AM 6:30 PM
10/18/2016 11:30 AM 5:00 PM
【问题讨论】:
-
您所需要的只是一些左连接和一个派生表结果。请参阅下面的答案。
-
如果有人更新和编辑sql标签中的问题最好是marc_s谢谢@marc_s
-
@JonH:噢,非常感谢,乔恩!
标签: sql sql-server