Я пытаюсь обновить таблицу 1 в DB1 данными из таблицы 2 в DB2. Я могу подключать и получать данные из таблицы DB2 Table2 в таблицу DB1 Table1, но проблема, с которой я сталкиваюсь, - получение данных MOST RECENT из таблицы DB2 Table2.Как обновить другую таблицу с самыми последними данными в SQL?
Я ищу 3 поля в DB2: f1, f2, & f3. f1 содержит дубликаты (и там, где я сопоставляюсь с таблицей 1 DB1), а f3 - поле даты, и я хочу получить самую последнюю дату для обновления таблицы DB1 Table1. Ниже приведены некоторые из кода, который я использую:
Update Table1
Set f2 = c.f2,
f3 = convert(varchar, c.f3, 101)
From Table1 b
inner join Server.DB.dbo.Table2 c on b.f1 = c.f1
Where b.f1 = c.f1
Образец данных:
c.f1 c.f2 c.f3
8456 RS47354 06/30/2009
8456 M101021 10/31/2009 (want this one)
7840 5574 NULL
7840 RH013057 06/30/2010 (want this one)
7650 RS48100 06/30/2007
7650 RS49010 06/30/2009 (want this one)
b.f1 b.f2 b.f3
8456 Null Null
7840 Null Null
7650 Null Null
В конце концов, это будет установлен внутри пакета SSIS.
Любая помощь ценится!
-JFV
Вы сравниваете f1 с f3, поэтому я уверен, что это не сработает правильно. –
@samjudson Мне удалось получить код, работающий с помощью вашего метода, но для его обновления требуется некоторое время. Я думал о настройке триггера для обновления таблицы 1 сразу после того, как Table2 был обновлен или вставлен таким образом, что информация будет обновляться в режиме реального времени, а не в ночное время. Считаете ли вы, что инициированное обновление будет быстрее (после того, как я впервые обновляюсь в первый раз)? – JFV
Да, гораздо быстрее. Кроме того, я замечаю, что вы конвертируете дату с даты в строку. Если возможно иметь оба поля в качестве дат, это ускорит процесс, поскольку преобразование не должно происходить. – samjudson