【问题标题】:SQL - Select latest unique based on two columnsSQL - 根据两列选择最新的唯一
【发布时间】:2018-03-06 13:06:39
【问题描述】:

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

我想要做的是选择具有不同值DATETIME 的最新行(基于CRE_DATE),其中DATETIME is >= (CURRENT DATE -3 DAYS)NAME='TEST'。我试图从这个查询开始,但我无法让它工作:

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

【问题讨论】:

    标签: sql db2 unique distinct


    【解决方案1】:

    在 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;
    

    【讨论】:

    • 工作得很好,谢谢!只需要删除mae。从子选择中,因为您没有使用该别名@GordonLinoff
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多