我有4列,如下所示:
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中选择唯一的值对。要找到一对,您应该在COL2_TIME中将最近的时间用于COL1_TIME。
因此,A的最短时间是E.对于B,其F-E已经被采用等。
结果应如下所示:
A E
B F
C G
D H
有什么想法吗?
答案 0 :(得分: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列中包含重复项。