码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SQL Server 日期范围按每月一行拆分


    要将 SQL Server 中的日期范围按每月一行拆分,可以使用一个表值函数(Table-Valued Function)来生成日期范围内的月份,并将其与其他数据连接,以创建包含每月一行的结果集。

    以下是一个示例,说明如何实现这一目标:

    有一个人力明细表:姓名、工号、部门、状态

    费用表:单号、部门、摊销时间起、摊销时间止、费用类型、费用金额

    目标:将摊销起止时间的范围拆成每月一行

    比如:把表1转换成表2的格式

    摊销时间起摊销时间止
    2023-03-012023-05-01

    表1

    费用时间
    2023-03-01
    2023-04-01
    2023-05-01

    表2

    1、首先,创建一个表值函数来生成日期范围内的月份

    1. CREATE FUNCTION GenerateMonthRange(@StartDate DATE, @EndDate DATE)
    2. RETURNS TABLE
    3. AS
    4. RETURN
    5. (
    6. WITH DateRange AS
    7. (
    8. SELECT @StartDate AS StartDate
    9. UNION ALL
    10. SELECT DATEADD(MONTH, 1, StartDate)
    11. FROM DateRange
    12. WHERE DATEADD(MONTH, 1, StartDate) <= @EndDate
    13. )
    14. SELECT StartDate
    15. FROM DateRange
    16. );

    这个函数会生成从给定的 @StartDate 到 @EndDate 之间的所有月份。

    2、接下来,您可以使用这个函数来生成日期范围内的月份,并将其与其他表连接,以创建包含每月一行的结果集。

    1. DECLARE @StartDate DATE = '2023-01-01';
    2. DECLARE @EndDate DATE = '2027-12-31';
    3. SELECT m.StartDate, t.[单号],t.[部门],t.[费用金额]
    4. FROM GenerateMonthRange(@StartDate, @EndDate) m
    5. JOIN [费用表] t
    6. ON m.StartDate BETWEEN t.[摊销时间起] AND t.[摊销时间止];

    运行

  • 相关阅读:
    【毕业设计】基于SSM的仓库进存销系统
    python打包系列1 - pyinstaller打包遇坑笔记
    Maven安装详解
    【广州华锐互动】屠宰场生猪检疫VR模拟演练系统
    【Redis核心知识】实现秒杀的三种方案
    机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法
    leetcode最大二叉树
    正版软件|WonderFox Photo Watermark 图片水印批量处理软件
    计算机组成原理 期末复习笔记整理(上)(个人复习笔记/侵删/有不足之处欢迎斧正)
    vue3 electron 打包后进程通信无效,开发环境正常
  • 原文地址:https://blog.csdn.net/qq_40573403/article/details/132968446
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号