2013-03-18 6 views
0

У меня есть таблица с данными строк/в следующей структуреВыберите DISTINCT и MAX в одном запросе

----------- 
| SURVEY_ID | 
------------ 
| 1  | 
| 2  | 
| 2  | 
| 3  | 
| 4  | 
----------- 

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

select distinct(survey_id) as survey_id , max(survey_id) as current 
from survey_main 
group by survey_id 

Это, похоже, не возвращает правильный результат. Что мне не хватает?

Edit: Требуемый результат

 
     ---------------------- 
     | Distinct| Max  | 
     ---------------------- 
     | 1  | 4  | 
     | 2  | 4  | 
     | 3  | 4  | 
     | 4  | 4  | 
     ---------------------- 
+0

Вы пробовали это http://stackoverflow.com/questions/612231/how-can-i-select-rows-with-maxcolumn-value-distinct-by-another-column-in-sql – Mowgli

+0

Вы хотите количество всех опросов и макс (два столбца, одна строка)? – BellevueBob

+0

@ ItayMoav-Malimovka Я просто не хочу выполнять 2 отдельных запроса для второстепенной вещи. Максимальное значение, повторяющееся в каждой строке, отлично со мной. –

ответ

1

Я думаю решения Itay Moav-Malimovka «s просто отлично, но если вы действительно хотите иметь два столбца, которые вы могли бы использовать ....

select distinct(survey_id) as identifier, 
     (select max(survey_id) from survey) as "current" 
    from survey_main; 

Cheers!

+0

Это то, что я хотел! Спасибо за помощь! –

2
SELECT DISTINCT * 
FROM T 
ORDER BY SURVEY_ID DESC 

Первый результат МАХ, весь Dataset является отчетливое

+0

На самом деле я этого не хотел. Я хотел, чтобы запрос возвращал max, я могу в любом случае проанализировать набор результатов вручную. –

0

Если вы после подсчета всех survey_ids и максимально в одном запросе , попробуйте следующее:

select count(distinct survey_id) as number_of_survey_ids 
    , max(survey_id) as current 
from survey_main 

И если вы хотите, чтобы добавить максимальное значение в каждую строку и ваша база данных поддерживают оконные функции, попробуйте следующее:

select survey_id 
    , max(survey_id) over() as current 
from survey_main 
Смежные вопросы