繁体   English   中英

仅在一列中选择具有唯一值的值对(SQL)

[英]Select pairs of values with unique value in one column only (SQL)

我有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

有任何想法吗?

如果我理解正确,你可以这样做:

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

这保证了第3列中的值是唯一的。 您可以在第1列中包含重复项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM