Выберите три строки, когда две из них должны быть уникальными (SQL) - PullRequest
0 голосов
/ 14 сентября 2010

Прежде всего я использую Oracle 10g Express

Итак, я хочу выбрать три столбца:

[имя_домена] [index_path] [имя_коллекции]

сейчасЕсть два столбца, которые я хочу быть уникальными:

[имя_домена] [index_path]

Поэтому моя проблема заключается в том, как мне в основном:

select unique domain_name, index_path from TABLENAMEHERE

при выборестолбец [collection_name]

Ответы [ 4 ]

3 голосов
/ 14 сентября 2010

Если есть несколько строк для некоторых комбинаций имя_домена, путь_индекса, то какое значение коллекции_имя вы бы хотели видеть из этих строк? Если вы не возражаете против того, какое значение тогда сделайте:

SELECT domain_name, index_path, MIN(collection_name) collection_name
FROM TABLENAMEHERE
GROUP BY domain_name, index_path;
1 голос
/ 15 сентября 2010
select domain_name, index_path, collection_name
  from my_table outr
       inner join 
         (select domain_name, index_path, collection_name, 
                 max(gen_timestamp) 
                    over (partition by domain_name, index_path) gen_timestamp
            from my_table) innr
 where outr.domain_name = innr.domain_name
   and outr.index_path  = innr.index_path
   and outr.collection_name = innr.collection_name
   and outr.gen_timestamp   = innr.gen_timestamp
0 голосов
/ 14 сентября 2010

Вы можете группировать по имени_домена и index_path и включать ОДНО (минимальное или максимальное) значение collection_name для группы.

0 голосов
/ 14 сентября 2010

Просто замените unique на distinct в вашем запросе.

О ...

Тогда это должно быть так:

select [domain_name], [index_path], min([collection_name]) 
from TABLENAMEHERE
group by [domain_name], [index_path]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...