2017-02-20 4 views
-4

я одну таблицу T1 с ниже столбцовВыберите строку с максимальным значением

C1 SeqNo C2 ID 

1 1  10 abc 
1 1  20 xyz 
1 1  30 mn0 
1 2  10 123 
1 3  10 abc 
1 3  20 xyz 
2 1  10 a1c 
2 2  10 x1z 
2 2  20 m10 
2 2  30 1k3 
2 3  10 a1c 
2 3  20 x1z 

я должен выбрать ID, где SeqNo составляет макс и C2 составляет не более от максимального seqNo для каждого отдельного значения C1

Результат должен быть:

1 3 20 xyz 
2 3 20 x1z 

Если кто может помочь, пожалуйста

+1

Почему это помеченный '' mysql' и db2'? – shmosel

+0

ORDER BY seqno DESC, C2 DESC LIMIT 1 – Strawberry

+0

Используете ли вы MySQL или DB2? Ответ будет различным для каждого из них. – Barmar

ответ

0

Все, что вам нужно, это предложения GROUP BY с агрегатной функции MAX:

SELECT id, MAX(rev) FROM YourTable GROUP BY id ...

0
SELECT C1, SeqNo, MAX(C2), ID 
    FROM T1 
WHERE C1 = 1 
GROUP BY SeqNo 
ORDER BY SeqNo DESC 
LIMIT 1; 
0

в db2

select C1, ID, Max(SeqNo) as SeqNo, Max(C2) as C2 
from yourtable 
where C1=1 
group by C1, ID 
order by 3 desc, 4 desc, 2 desc 
fetch first rows only 
-1

SELECT * FROM T1 где c2 > = (SELECT max (c2) FROM check) предел 1

0

другое решение в DB2

select * from (
select f1.*, rownumber() over(order by SeqNo desc, C2 desc, ID desc) rang 
from yourtable f1 where f1.C1=1 
) tmp where tmp.rang=1 
Смежные вопросы