2014-11-18 6 views
0

я делаю это с помощью SQL в Access ...Выберите строки на максимальное значение другой строки

Это было, вероятно, ответил раньше, но я не знаю, как задать правильный вопрос, так что я могу» t найти решение.

Я таблица с именем «Таблица»:

attr_1 attr_2 attr3 
1  A  10 
1  B  5 
2  C  3 
3  D  7 
3  E  8 
3  F  11 

Я хочу, чтобы результат, сгруппированные по attr_1 где attr3 имеет максимальное значение, а также attr_2 из того же ряда. Так это то, что мне нужно в результате:

1  A  10 
2  C  3 
3  F  11 

Если я не нужен attr_2, то я должен знать, как сделать это с помощью GROUP BY и MAX, но я не знаю, как включить этот attr_2 в заявление sql, чтобы получить желаемый результат.

Пожалуйста, помогите.

ответ

1

Вам не нужен только group by. Вы просто хотите выбрать самую последнюю строку. Предполагая, что значение уникально, вы можете сделать:

select t.* 
from table as t 
where t.attr3 = (select max(t2.attr3) from table as t2 where t2.attr_1 = t.attr_1); 
2

вы можете получить максимальное значение в subquery И join в таблицу, чтобы получить все значения.

SELECT attr_1, attr_2, attr3 
FROM (
    SELECT attr_1, max(attr3) as maxAttr3 
    FROM Table1 
    GROUP BY attr_1)T 
JOIN Table1 T1 
on T.maxAttr3 = T1.attr3 
and T.attr_1 = T1.attr_1 
+0

Большое спасибо за быстрый ответ. Это выглядит хорошо, но я получаю синтаксическую ошибку ... Я пытаюсь найти причину сейчас – Mario

+0

@Bezk, какая именно ошибка? продолжайте обновляться. – radar

+0

В нем говорится: синтаксическая ошибка в предложении FROM (я только что создал ту же таблицу, что и в моем вопросе, - например, это был пример, просто чтобы убедиться, но все равно такая же ошибка). Я даже добавляю ту же несогласованность в именах атрибутов :) – Mario

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