2017-02-01 1 views
1

У меня 4 колонки, как показано ниже:Выберите пары значений с уникальным значением в одном столбце только (SQL)

COL1 COL1_TIME COL2 COL2_TIME 
    A 09:20:00 E 09:35:00 
    A 09:20:00 F 09:36:00 
    A 09:20:00 G 09:40:00 
    A 09:20:00 H 09:59:00 
    B 09:25:00 E 09:35:00 
    B 09:25:00 F 09:36:00 
    B 09:25:00 G 09:40:00 
    B 09:25:00 H 09:59:00 
    C 09:30:00 E 09:35:00 
    C 09:30:00 F 09:36:00 
    C 09:30:00 G 09:40:00 
    C 09:30:00 H 09:59:00 
    D 09:50:00 H 09:59:00 

я должен выбрать уникальные пары значений из столбцов COL1 и COL2. Чтобы найти пару, вы должны занять самое близкое время до COL1_TIME в COL2_TIME.

Так colsest время А Е. Для В его F - E берется уже и т.д.

Результат должен выглядеть следующим образом:

A E 
B F 
C G 
D H 

Есть идеи?

+0

Что делает эти значения «уникальными в столбце 3»? Я не следую логике. –

ответ

0

Если я правильно понимаю, вы можете сделать это так:

select t.* 
from (select t.*, row_number() over (partition by col3 order by col4) as seqnum 
     from t 
    ) t 
where seqnum = 1; 

Это гарантирует, что значения в столбце 3 уникальны. У вас могут быть дубликаты в столбце 1.

+0

его не то, что мне нужно, мне нужно сначала найти (ближе всего к c1 времени в c4) значение в c3, сопоставить его с c1 - так что первая пара A - E, вторая - B - F, а не A - F. Ваш запрос возвращает A - E, A - F, A - G, A - H, поэтому на самом деле мне нужны уникальные пары, а не только уникальное значение в c3 –

+0

@ MichałPolowczyk. , , Я думаю, вы должны задать другой вопрос и лучше объяснить, что вам действительно нужно. Вопросы не следует задавать в комментариях. –

+0

ok, я отредактировал вопрос –

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