首页 > 解决方案 > SQL - 获取最小值

问题描述

有人可以帮助我完成以下查询。非常感谢你!

我试图从中得到:

FILE_NO     EVENT_TIME           VOY
VN1234      2021-06-20 03:15:00  QR888/20
VN1234      2021-06-22 07:10:00  QR999/22

对此:

FILE_NO     EVENT_TIME           VOY
VN1234      2021-06-20 03:15:00  QR888/20

我的查询是:

SELECT
        BEE.FILE_NO,
        BEE.TIME,
        BEE.VOY
FROM    BRDB.EXPORT_EVENT BEE
WHERE   
        BEE.EVENT_CODE = 'OKL' AND
        BEE.FILE_NO = 'VN1234'

标签: sql

解决方案


您可以使用order by并将行限制为一行:

SELECT BEE.*
FROM BRDB.EXPORT_EVENT BEE
WHERE BEE.EVENT_CODE = 'OKL' AND
      BEE.FILE_NO = 'VN1234'
ORDER BY EVENT_TIME
OFFSET 1 ROW FETCH FIRST 1 ROW ONLY;

注意:这使用标准 SQL 语法。大多数数据库都有另一种方法来将结果集限制为一行——例如LIMITSELECT TOP

编辑:

基于编辑:

SELECT BEE.*
FROM (SELECT BEE.*,
             ROW_NUMBER() OVER (PARTITION BY BEE.FILE_NO ORDER BY EVENT_TIME ASC) as seqnum
      FROM BRDB.EXPORT_EVENT BEE
      WHERE BEE.EVENT_CODE = 'OKL' 
     ) BEE
WHERE seqnum = 1;

推荐阅读