2013-08-21 2 views
1

у меня в таблице базы данныхOracle SQL Возврат однорядные На основании максимального значения из столбца

а | 1

a | 2

a | 3

a | 4

Как я должен вернуться только с SELECT, запрос:

а | 4

Я пробовал несколько комбинаций с отличными и максимальными значениями, но все они кажутся несущественными.

+0

Неясно, что вы хотите. Является ли '' 'постоянным, или вы ожидаете других значений там? В противном случае вы можете просто выбрать 'a ', max (b) из таблицы'. Кроме того, если есть другие значения, вы хотите их увидеть или просто с максимальным значением? –

ответ

7
SELECT MAX(a) AS a FROM <TABLE> 

Edit: я думал, что «а» было имя столбца, если это еще один столбец, используйте

SELECT col1, MAX(col2) FROM <TABLE> GROUP BY col1 

которая возвращает одну строку для каждого col1 значения. Если там есть другие значения (например, b, c), это зависит от того, что вы хотите.

+0

Это только вернет одну строку ?? – rofans91

+0

это вернет все строки. – Victor

1

Вы можете использовать аналитические функции для этого (предполагая столбец имен содержит «а» и столбец содержит значение 1,2,3,4, ...):

select * from (
    select name, value, rownum over (partition by 1 order by value desc) 
    as rn 
    from mytable) 
where rn = 1 

Или, вы можете использовать обычный старый ORDER BY:

select * from (
    select name, value 
    from mytable 
    order by value desc) 
where rownum = 1 
1

Предполагая, что ваш стол T имеет два столбца C1 и C2, вы пробовали это следующим образом?

select C1, C2 from T where C2 in (select max(C2) from T) 

EDIT - я попробовал мину, а также другие предлагаемые ответы, и, к моему удивлению, это один работает лучше для меня, несмотря на то, что я должен сделать полное сканирование таблицы в суб-запроса. Если у вас есть то, что вы искали, не могли бы вы поделиться им с нами или отметить лучший ответ?

-1

если вы дали это значение в таблице, то вы можете использовать

select column_name, max(coulumn_b) from table_name 
1

Попробуйте, как это.

select Col_A,Col_B 
from Table_X 
where Col_B =(select max(Col_B) from Table_X) 
5

запрос заключается в следующем:

select * from yourTable 
where B = (select max(B) from yourTable); 
4

Я предполагаю, что вы не просто хотите получить | 4, но есть и другие подобные комбинации, как б | 3, с | 6 и т.д., Так предполагая, столбцы c1, c2, то запрос будет

select * from table_1 where (c2) in (select max(c2) from table_1 group by c1) 

Если ваш стол как

C1|C2 
a|1 
a|2 
a|4 
b|3 
c|2 
c|6 

выход будет, как

a|4 
b|3 
c|6 
Смежные вопросы