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