请问ORACLES数据库当某个字段出现第一个负数的时候,当前行和后面的所有行都不取

请问不用子查询和嵌套的情况下怎么过滤掉XS字段出现第一个负数以及后面的所有行,select  * from (原查询) where CZYF<(select CZYF from 原查询 where xs <0 ) 这样可以解决,但是sql太长了,请问大佬们有没有什么函数可以解决

LHL`AF64(~5U4YTH36IZ`R1.png

FineReport 麦兜的兜 发布于 2022-9-26 15:02
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-26 15:16

。。。这个sql就长了?大哥,你难道以为所有的需求只要写1-2行就可以解决吗?能够解决问题就行了。sql长,如果有效率也是可以的。不用太意那么多了,很多公司业务需求复杂,比如有可能一个报表要写300-500行sql语句才可能出来。但是只要效率可以,那么是一样可取的。完成工作才是重点

最佳回答
0
蒲公英FZLJLv5初级互助
发布于2022-9-26 16:10

可以用with as,类似把原查询作为一个临时表,这样原查询的语句就不用重复写,类似如下

with t as (原查询)

select  * from t where CZYF<(select min(CZYF) from t where xs <0 )#建议如果有多个负数的话,是不是要改成取最小值

  • 3关注人数
  • 263浏览人数
  • 最后回答于:2022-9-26 16:10
    请选择关闭问题的原因
    确定 取消
    返回顶部