2017-02-01 6 views
1

Ich habe 4 Säulen, wie unten:mit eindeutigem Wert nur in einer Spalte (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 

I einzigartige Paare von Werten aus den Spalten COL1 und COL2 auswählen. Um ein Paar zu finden, sollten Sie COL1_TIME in COL2_TIME am nächsten gehen.

So ist die colsest Zeit für A E. Für B seine F - E ist bereits vergeben usw.

Ergebnis sollte wie folgt aussehen:

A E 
B F 
C G 
D H 

Irgendwelche Ideen?

+0

Was macht diese Werte "einzigartig in Spalte 3"? Ich folge nicht der Logik. –

Antwort

0

Wenn ich richtig verstehe, Sie können dies tun, wie:

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

Dies garantiert, dass die Werte in Spalte 3 eindeutig sind. Sie können Duplikate in Spalte 1 haben.

+0

es ist nicht was ich brauche, ich muss zuerst finden (am nächsten zu c1 Zeit in c4) Wert in c3, paar es mit c1 - so das erste Paar ist A - E, zweite ist B - F, nicht A - F. Ihr Abfrage gibt A - E, A - F, A - G, A - H zurück, so tatsächlich brauche ich eindeutige Paare, nicht nur eindeutigen Wert in c3 –

+0

@ MichałPolowczyk. . . Ich denke, du solltest eine andere Frage stellen und besser erklären, was du wirklich brauchst. Fragen sollten nicht in Kommentaren gestellt werden. –

+0

ok, ich habe die Frage bearbeitet –

Verwandte Themen