2017-01-02 5 views
-5

я получаю с ума для выбора только один столбец disctint по набору колонкиВыберите отчетливый только на один столбец с Oracle

Допустим, у меня есть этот запрос: SELECT A, B, C, D FROM TABLE WHERE A = 1

И это выход

A B C D 
1 2 8 5 
1 2 2 5 
1 2 3 5 

Но я хотел бы что-то вроде этого:

A B C D 
1 2 8 5 

Как я мог достичь этого?

Спасибо всем!

+0

Откуда вы знаете, что хотите 8 в 3-й колонке? Вы действительно хотите наивысшую ценность (т. Е. Агрегировать и группировать) или какое-то другое правило? И что, если 2 или 4 столбцы также имеют разные значения, для другого A? –

+1

Почему вы думаете, что «8» - это «отличное» значение для столбца «C»? –

+0

Если у вас несколько строк с 'A = 1', какой из них следует выбрать? Или вы в порядке, просто выбрав «один из них, не имеет значения, какой из них»? – mathguy

ответ

0

Один подход заключается в упорядочить результаты на колонке C по убыванию, а затем просто взять первую строку:

SELECT * FROM (
    SELECT A, B, C, D 
    FROM TABLE_NAME 
    WHERE A = 1 
    ORDER BY C DESC 
) 
WHERE ROWNUM = 1; 

+1

Это все еще догадывается, не так ли? В требовании не говорилось, что «отличные от« A = 1 »и« C »максимизированы, выбор« B »и« D »может быть случайным». – mathguy

0

Выберите A, B, макс (С) С, D От table_name Группа по A, B, D

0

Если вы хотите получить результаты с наибольшим числом в C, попробуйте ниже запрос ВЫБЕРИТЕ A, B, C, D FROM table WHERE A = 1 AND C IN (SELECT MAX (C) FROM table) ;

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