oracle请求中的条件

莱德·泽金

我有一个日期字段,可以null在Oracle数据库中。

我想选择日期最高的行。但是,如果只有一行带有null日期,并且我使用max子句,它将被忽略。

SELECT val1, val2 
from T_DER 
WHERE DATE_AP = ( SELECT MAX (DATE_AP) FROM T_DER WHERE AE= 'XXX')
AND (AE= 'XXX');

因此,在这些情况下:

  • 对于AE = XXX =>第1行:DATE_AP = 2015年1月1日,第2行:DATE_AP = 2016年1月2日
    • 返回第2行
  • 对于AE = XXX =>第1行:DATE_AP = 2015年1月1日,第2行:DATE_AP =空
    • 返回第1行
  • 对于AE = XXX =>第1行:DATE_AP =空
    • 返回第1行
戈登·利诺夫(Gordon Linoff)

使用分析功能:

SELECT t.*
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY AE ORDER BY DATE_AP DESC NULLS LAST) as seqnum
      FROM T_DER t
      WHERE AE = 'XXX'
     ) t
WHERE seqnum = 1;

ROW_NUMBER()是一个窗口/分析/排序功能,在此处记录基本上,它为行组分配一个顺序号,其中行由partition by子句定义,每个组内的顺序由定义order by

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章