码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • oracle递归with子句


    比如现在想获取开始日期到结束日期每个月的月底日期,这个时候可以通过递归实现:

    1. --通过递归with子句获取开始日期到结束日期每个月的月末日期
    2. WITH date_range (month_start, month_end) AS (
    3. SELECT TRUNC(to_date('@bdate','yyyy-mm-dd'), 'MM'),
    4. LAST_DAY(to_date('@bdate','yyyy-mm-dd'))
    5. FROM dual
    6. UNION ALL
    7. SELECT ADD_MONTHS(month_start, 1),
    8. LAST_DAY(ADD_MONTHS(month_start, 1))
    9. FROM date_range
    10. WHERE ADD_MONTHS(month_start, 1) <= to_date('@edate','yyyy-mm-dd')
    11. )
    12. SELECT month_end
    13. FROM date_range

    这个查询使用了递归查询 (WITH 子句) 来生成开始日期到结束日期范围内每个月的起始日期和结束日期。在递归的每一步中,我们使用 ADD_MONTHS() 函数来计算下一个月的起始日期,并使用 LAST_DAY() 函数获取当前月的月末日期。

    在查询的最后一部分,我们选择了生成的月末日期,并将它们作为结果返回。

    另一个例子:

    当在Oracle数据库中使用递归WITH子句时,一个常见的示例是计算斐波那契数列(Fibonacci sequence)。斐波那契数列是一个无限序列,每个数字都是前两个数字之和。

    下面是一个使用递归WITH子句生成斐波那契数列的示例:

    WITH fib_seq(n, f1, f2) AS ( SELECT 1, 0, 1 FROM dual UNION ALL SELECT n + 1, f2, f1 + f2 FROM fib_seq WHERE n < 10 ) SELECT f1 as fibonacci_number FROM fib_seq;

    在这个示例中,我们定义了一个递归WITH子句fib_seq,它包含三列:n表示当前数字的位置,f1表示前一个数字,f2表示当前数字。初始查询部分是斐波那契数列的第一个数字,即0和1。递归查询部分通过在之前的结果上计算得到下一个数字,直到达到预定的终止条件(在这里是n<10)。

    最后,我们从递归结果中选择列f1作为斐波那契数列的每个数字,并将其作为结果返回。

    执行这个查询将生成斐波那契数列的前十个数字:0、1、1、2、3、5、8、13、21、34。

    这是一个简单的示例来说明递归WITH子句的使用方法。你可以根据自己的需求和逻辑定义不同的递归查询。

  • 相关阅读:
    centos 根目录逻辑卷扩容/home -> /
    Mysql —— “子查询”内容上的打字练习
    前沿研究|16s+宏基因组binning揭示大型藻类附生微生物群落核心组成
    用位运算为你的程序加速
    linux内核printk的一些并发处理
    技能大赛dhcp服务训练题
    Java学习路线图(完整详细2021版)
    微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行
    Flink学习之旅:(二)构建Flink demo工程并提交到集群执行
    API接口对电商平台有怎样的帮助?如何获取API接口?
  • 原文地址:https://blog.csdn.net/weixin_38314865/article/details/132834841
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号