简体   繁体   English

SQL - 根据两列选择最新的唯一值

[英]SQL - Select latest unique based on two columns

I have this table called TEST in a DB2 Warehouse table:我在 DB2 Warehouse 表中有一个名为 TEST 的表:

    DATETIME                NAME  TYPE ANOMALY  CRE_DATE
0   2018-03-05 14:50:30     TEST    UV  0   2018-03-03 12:48:10.058288
1   2018-03-05 14:51:30     TEST    UV  0   2018-03-03 12:50:38.574614
2   2018-03-05 14:51:30     TEST    UV  0   2018-03-03 12:52:01.705416
3   2018-03-05 14:51:30     TEST    UV  0   2018-03-05 13:45:56.937965

What I want to do is select the latest rows (based on CRE_DATE ) with a distinct value of DATETIME where DATETIME is >= (CURRENT DATE -3 DAYS) and NAME='TEST' .我想要做的是选择具有不同DATETIME值的最新行(基于CRE_DATE ),其中DATETIME is >= (CURRENT DATE -3 DAYS)NAME='TEST' I tried to start with this query but I can't get it to work:我试图从这个查询开始,但我无法让它工作:

SELECT 
    DISTINCT DATETIME, 
    NAME, 
    TYPE, 
    ANOMALY, 
    CRE_DATE 
FROM 
    ML_ANOMALY_EVALUATION 
WHERE 
    ANOMALY=FALSE AND 
    NAME='TEST' 
ORDER BY 
    CRE_DATE DESC

In DB2, the simplest way is to use row_number() :在 DB2 中,最简单的方法是使用row_number()

SELECT mae.*
FROM (SELECT mae.*,
             ROW_NUMBER() OVER (PARTITION BY datetime ORDER BY CRE_DATE DESC) as seqnum
      FROM ML_ANOMALY_EVALUATION mae
      WHERE ANOMALY = FALSE AND NAME = 'HOG.683KQC206' 
     ) mae
WHERE seqnum = 1
ORDER BY CRE_DATE DESC;

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

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