SQL: ссылки 2 источников данных по дате

Новичок на этой странице. Мне нужна помощь со связыванием данных в Microsoft SQL. У меня есть две таблицы данных, оба довольно большие наборы данных, которые мне нужно как-то связать. Мой первый набор данных показывает дату и время начала и окончания группы и имеет уникальный идентификатор. Второй набор имеет уникальный идентификатор, но его нельзя связать с первым набором. Единственные поля, которые я мог связать, - это дата, время и группа. Я пытаюсь, чтобы во 2-й таблице отображался идентификатор из первой таблицы, чтобы я мог затем присоединиться к наборам данных. Это обновление 1 раз и не нуждается в обновлении.

Мне нужно основать ссылку на ниже:

ЕСЛИ ds2.Time находится между ds1.Start_Time и ds1.End Time, то ds1.ID

дс = источник данных

Источник данных 1

ID  Start Date  End Date    Start Time  End Time    Group
1   12/01/2010  12/01/2010  12:45        13:10        A
2   12/01/2010  12/01/2010  12:00        14:55        B
3   12/01/2010  12/01/2010  12:55        13:45        C
4   12/01/2010  12/01/2010  13:55        14:25        A
5   12/01/2010  12/01/2010  15:02        15:55        B

Источник данных 2

Date          Time  Group   Total   ID
12/01/2010  12:45   A         13    ?
12/01/2010  12:46   A         15    ?
12/01/2010  12:47   A          8    ?
12/01/2010  12:48   B         10    ?
12/01/2010  13:55   B          8    ?
12/01/2010  13:57   B          9    ?
12/01/2010  13:58   B         10    ?
12/01/2010  13:59   B         12    ?
12/01/2010  14:01   B         14    ?

Как я уже писал, я опубликую окончательный ответ, если не смог найти на странице, чтобы помочь закрыть для других.

1 ответ

Решение

Вы можете присоединиться к таблицамTable1 и Table2 и использовать UPDATE для таблицы Table2.

UPDATE Table2
SET Id = (
          SELECT Id
          FROM Table1 t1 
          JOIN Table2 t2
             ON (t1.Group = t2.Group) AND
                (t1.StartDate = t2.Date) AND
                (t1.StartTime = t2.Time)
          )

Или как то так:

UPDATE Table2 t2
JOIN Table1 t1
ON (t1.Group = t2.Group) AND
   (t1.StartDate = t2.Date) 
SET t2.Id = t1.Id
WHERE t2.time BETWEEN t1.StartTime AND t1.EndTime
Другие вопросы по тегам