gpt4 book ai didi

sql - oracle请求中的Where条件

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:05 25 4
gpt4 key购买 nike

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

我想选择日期最长的行。但是,如果只有一行包含 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 = 01/01/2015 和第 2 行:DATE_AP = 01/02/2016
    • 返回第2行
  • 对于 AE = XXX => 第 1 行:DATE_AP = 01/01/2015 和第 2 行:DATE_AP = null
    • 返回第一行
  • 对于 AE = XXX => 第 1 行:DATE_AP = null
    • 返回第一行

最佳答案

使用解析函数:

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() 是一个窗口/分析/排名函数,已记录 here .基本上,它为行组分配一个序列号,其中组由 partition by 子句定义,每组内的排序由 order by 定义。

关于sql - oracle请求中的Where条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com