两张有时间的表,没有重叠

时间:2019-03-28 17:56:36

标签: sql sql-server azure-sql-database

我有两个具有时隙功能的时隙,第一个是当一个人被预订时,第二个表是可以完成任务的时隙。

我需要一直寻找可以在哪里完成任务以及由谁完成的任务。

表a是预定该人的时间列表。

表b列出了可以交叉连接任务的所有时隙,并列出了可以执行任务的人

table a
2019-03-28 00:00:00.0000000 | 2019-03-28 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 00:00:00.0000000 | 2019-03-29 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-30 00:00:00.0000000 | 2019-03-30 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-31 00:00:00.0000000 | 2019-03-31 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-01 00:00:00.0000000 | 2019-04-01 07:00:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-01 13:00:00.0000000 | 2019-04-01 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-02 00:00:00.0000000 | 2019-04-02 07:00:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-02 13:00:00.0000000 | 2019-04-02 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-03 00:00:00.0000000 | 2019-04-03 07:00:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-04-03 19:00:00.0000000 | 2019-04-03 23:59:00.0000000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6


table b
2019-03-29 18:00:00.000 | 2019-03-29 20:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 19:00:00.000 | 2019-03-29 21:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 20:00:00.000 | 2019-03-29 22:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 21:00:00.000 | 2019-03-29 23:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 22:00:00.000 | 2019-03-30 00:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-29 23:00:00.000 | 2019-03-30 01:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-30 00:00:00.000 | 2019-03-30 02:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-30 03:00:00.000 | 2019-03-30 05:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-30 04:00:00.000 | 2019-03-30 06:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6
2019-03-30 05:00:00.000 | 2019-03-30 07:00:00.000 | C235E2D9-F1C8-4D04-BA71-097BE66135E6

DECLARE @BookedTimeslot TABLE (

    [StartTime] datetime2(7),

    [EndTime] datetime2(7),
    [StakeholderId] uniqueidentifier

)

DECLARE @PossibleTimeslot TABLE (

    [StartTime] datetime2(7),

    [EndTime] datetime2(7),
    [StakeholderId] uniqueidentifier

)

1 个答案:

答案 0 :(得分:1)

听起来像您想要B中没有匹配记录的人(ID)的B时间跨度重叠的A记录的行。

Apps & Features