数据查询伪命题

查询数据时,如果没有最新数据就默认沿用有数据的那天。sql如何写。

之前的查询是沿用昨天数据,nvl(s.zhichu,nvl(r.zhichu,yxts.zhichu))zhichu

yxts取的是昨日数据

SQL 用户G2632943 发布于 2023-3-1 11:33 (编辑于 2023-3-1 15:26)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
JL98Lv6中级互助
发布于2023-3-1 15:48(编辑于 2023-3-1 15:52)

那不就是取时间最大的那一条吗,写一下你需要的维度字段,按日期倒序排出序号,之后WHERE RN = 1就可以了

 row_number() over(partition by 维度字段1,维度字段2 order by 日期 desc) RN

oracle中row_number()的用法

https://www.cnblogs.com/heyt/p/11346239.html

  • 用户G2632943 用户G2632943(提问者) 这样值值等于1
    2023-03-01 16:39 
  • JL98 JL98 回复 用户G2632943(提问者) row_number() over(partition by 维度字段1,维度字段2 order by 日期 desc) RN,这个里面不要写数值字段,你底层表里只有一天数据吗,还是条件限制了只取一天数据,不要限制日期
    2023-03-01 17:10 
  • 用户G2632943 用户G2632943(提问者) 回复 JL98 那这个就不行,查询的就是数值字段
    2023-03-02 10:03 
  • JL98 JL98 回复 用户G2632943(提问者) row_number() over(partition by 维度字段1,维度字段2 order by 日期 desc) RN这个语句作用主要是排序,所以这个语句里不要有数值字段
    2023-03-02 11:27 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-3-1 11:45

ORACLE不熟悉。下面语句行就最好,不行等下一个

SELECT (CASE WHEN NVL(A.ZHICHU,'')='' THEN (SELECT B.ZHICHU FROM TABLE B WHERE B.RQ<A.RQ AND NVL(B.ZHICHU,'')<>'' AND ROWNUM=1) ELSE A.ZHICHU END) FROM TABLE A

https://blog.csdn.net/samHuangLiang/article/details/126527423 

最佳回答
0
CD20160914Lv8专家互助
发布于2023-3-1 15:32

nvl(r.zhichu,(select zhichu from 表名称 时间=(select max(时间) from 表名称)))

  • 3关注人数
  • 294浏览人数
  • 最后回答于:2023-3-1 15:52
    请选择关闭问题的原因
    确定 取消
    返回顶部