2016-04-12 3 views
0

У меня есть две приведенные ниже таблицы.SQL Server 2008 -Совершенствование по максимальным значениям в нескольких таблицах

a.id a.UpdateDate a.O a.1  b.id b.UpdateDate b.0 b.1 
    1  1/1/15  a  b   1   2/1/15 a  b 
    1  1/1/15  c  d   1   3/1/15 a  c 
    1  5/1/15  e  f   1   3/1/15 d  e 

Я хотел бы видеть одну строку на Id. Последняя дата обновления для таблицы a Последнее обновление для таблицы b затем присоединяется к этим двум таблицам в Id. Таким образом, я получаю самые последние обновления из обеих таблиц с одной строкой на один идентификатор.

a.id a.UpdateDate b.id b.UpdateDate a.o a.1 b.0 b.1 
    1  5/1/15  1   3/1/15  e  f  d  e 

Я хочу максимальные значения для обеих таблиц и борюсь за следующие шаги. EDIT - мне нужны последние UpdateDate и id (1 строка на id) для обеих таблиц, тогда я хотел бы присоединиться к таблицам a и b к id.

Select a.id, a.UpdateDate, b.id, b.UpdateDate 
From a 
    inner join (select id, max(UpdateDate) AS dt From a group by id) 
    maxdt On A.id = maxdt.id and a.UpdateDate = maxdt.UpdateDate 

Вышеупомянутое решение заключается в извлечении максимального значения UpdateDate из таблицы a. Теперь как я могу извлечь max UpdateDate из таблицы b? Надеюсь, что это ясно ...

ответ

1
SELECT * 
FROM (
     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY id ORDER BY updateDate DESC) rn 
     FROM a 
     GROUP BY 
       id 
     ) ag 
JOIN (
     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY id ORDER BY updateDate DESC) rn 
     FROM b 
     GROUP BY 
       id 
     ) bg 
ON  bg.id = ag.id 
WHERE ag.rn = 1 
     AND bg.rn = 1 
+0

Quassnoi - Не уверен, что это сработает. Если я хочу добавить столбец из таблицы A или B, мне нужно будет добавить эти столбцы во внутренний select и group by, правильно? Я пытаюсь избежать этого, и я захватил первую часть выше, где я сам присоединился. Я надеялся, что смогу сделать это со столом B тоже. –

+0

@mrjohn: зачем вам нужно добавлять другие столбцы для выбора и группировки? В наборе результатов есть только id и max date. – Quassnoi

+0

Есть дополнительные столбцы, которые необходимо добавить. У меня около 40 столбцов. –

Смежные вопросы