Oracle - уникальные комбинации значений из нескольких столбцов, но с возвращением других столбцов - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь выяснить, как вытащить различные сценарии данных из моей таблицы для тестирования. Предположим, что в моей таблице есть эти три поля FIELD1, FIELD2, FIELD3. Если я хочу найти различные сценарии в моих данных, я могу просто сделать это

select distinct FIELD1, FIELD2, FIELD3 from <table>

И это работает. Проблема в том, что у меня есть множество других полей, из которых мне также нужны данные, но не имеет значения, что это за данные, если они связаны с результирующей записью. Так, например, если приведенный выше запрос вернул это как один из результатов

FIELD1  FIELD2  FIELD3
----------------------
Y       Blue    31

Я бы хотел увидеть другие поля контента (скажем, с 4 по 10). Теперь, если они пришли из записи № 30 или записи № 20000 (при условии, что эти записи содержат эти 3 возвращенные значения), это не имеет значения, если все поля были возвращены указанной записью.

Надеюсь, что это имеет смысл, и кто-то может помочь!

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Что-то вроде

SELECT field1, 
       field2,
       field3,
       field4,
       ....
       field10
  FROM( SELECT field1,
               field2,
               ...,
               field10,
               rowid rid,
               min(rowid) OVER (partition by field1, field2, field3) min_rid
          FROM your_table_name )
 WHERE rid = min_rid

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

0 голосов
/ 21 августа 2014

Попробуйте это:

select a.* 
from tblA a, 
     (select min(rowid), col_1, col_2 from tblA
      group by col_1, col_2) b
where a.rowid=b.rid;      
...