У меня есть две идентичные таблицы: user_id, name, age, date_added. Столбец USER_ID может содержать несколько повторяющихся идентификаторов.SQL-запрос для объединения двух таблиц с дополнительными условиями?
Необходимо объединить эти 2 таблицы в 1 со следующим условием. Если для одного и того же пользователя есть несколько записей с одинаковым «именем», тогда необходимо сохранить только запись «ПОСЛЕДНИЕ» (по дате). Этот скрипт будет использоваться с MSSQL 2005, но будет также признателен, если кто-то придумает версию, которая не использует ROW_NUMBER(). Нужно, чтобы этот скрипт перезагружал сломанную таблицу один раз, производительность не критична.
пример:
table1:
1,'john',21,01/01/2010
1,'john',15,01/01/2005
1,'john',71,01/01/2001
table2:
1,'john',81,01/01/2007
1,'john',15,01/01/2005
1,'john',11,01/01/2008
результат:
1,'john',21,01/01/2010
UPDATE: Я думаю, что я нашел свое собственное решение , Он основан на ответе на мой предыдущий вопрос, заданный Ларри Лустигом и Джо Стефанелли.
с tmp2 как ( SELECT * FROM table1 UNION
SELECT * FROM table2 )
SELECT * FROM tmp2 c1 ГДЕ (SELECT COUNT (*) FROM tmp2 c2 ГДЕ c2.user_id = c1.user_id И c2.name = c1.name И c2.date_added> = c1.date_added) < = 1
не могли бы вы мне помочь преобразовать этот запрос к одной без «WI TH '?
Пожалуйста, разместите код, который вы написали. Люди обычно не любят просто писать свой код для вас. Как бы то ни было, это описание работы, а не вопрос. –
Я все еще работаю над этим. Пока нет хорошего рабочего решения. Обязательно опубликуйте его здесь, если я придумаю один, прежде чем кто-то еще опубликует их здесь. – myforums
начните с записи оператора select, который возвращает уникальные идентификаторы пользователя и максимальные даты - это простая группа, а затем заверните это в оператор insert. – Randy