Этот вопрос связи на мой предыдущий вопрос:Обновление столбцов из одной таблицы с соответствующими значениями столбцов из другой таблицы
Updating only ID's with the latest date SQL (2 of 6)
У меня есть следующие 2 таблицы:
Я уже есть этот запрос, который обновляет идентификаторы в таблице 1, где найдена только самая последняя дата. Однако возможно ли сопоставить соответствующие идентификаторы в таблице 1 с соответствующими идентификаторами в таблице2 на основе даты.
Пожалуйста, смотрите мой запрос ниже:
Update Dairy
SET DY_H_ID = (
SELECT MAX(ID)
FROM History
WHERE H_DateTime <= DY_Date
AND H_IDX = DY_IDX
AND H_HA_ID = 7
AND H_HSA_ID = 19
AND H_Description LIKE 'Diary item added for :%'
)
WHERE DY_H_ID IS NULL
AND DY_IDX IS NOT NULL
AND DY_Date = (SELECT MAX(DY_Date) FROM Dairy)
Я хотел бы сделать что-то вроде этого, чтобы соответствовать остальной вверх, однако это не работает:
AND SUBSTRING(CAST(DY_Date AS varchar(11)), 1, 10) = (SELECT SUBSTRING(CAST(H_DateTime AS varchar(11)), 1, 10) FROM History)
Э.Г. ID 10029 в таблице 1 должен получить ID 3205 из Истории. ID 10030 должен получить идентификатор 3206, ID 10031 должен получить ID 3207, ID 10032 должен получить 3208 и т. Д.
Обратите внимание, что значения в обоих таблицах будут изменены.
Зачем вам нужно использовать SUBSTRING? Когда вы преобразите даты в Varchar (11), элемент времени больше не существует. – Gidil
И это отдельное ОБНОВЛЕНИЕ или часть предыдущего? – Gidil
Привет @Gidil, это часть предыдущего обновления. Да, это правда. Мне, вероятно, не нужно использовать SUBSTRING. – frans