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、首先,创建一个表值函数来生成日期范围内的月份

CREATE FUNCTION GenerateMonthRange(@StartDate DATE, @EndDate DATE)
RETURNS TABLE
AS
RETURN
(WITH DateRange AS(SELECT @StartDate AS StartDateUNION ALLSELECT DATEADD(MONTH, 1, StartDate)FROM DateRangeWHERE DATEADD(MONTH, 1, StartDate) <= @EndDate)SELECT StartDateFROM DateRange
);

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

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

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

运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/111678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ decltype()的两个特殊情况

我们对里面这一行反汇编&#xff1a; 很诡异的左值引用。提供了这么违反感觉的语法&#xff0c;可能是为了语法完备性&#xff0c;但不直观。

【基本数据结构 三】线性数据结构:栈

学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。 栈的定义 我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也…

Java8中判断一个对象不为空存在一个类对象是哪个

Java8中判断一个对象不为空存在一个类对象是哪个&#xff1f; 在Java 8中&#xff0c;你可以使用java.util.Optional类来处理可能为空的对象。Optional类可以帮助你优雅地处理空值情况&#xff0c;而不需要显式地进行空值检查。 这是一个简单的Optional示例&#xff1a; imp…

Matlab中关于 : 的使用

设&#xff0c;mat 这个矩阵的规格是 n*m&#xff0c;temp mat( i , j ) 矩阵的行和列的下标从1开始 在这个矩阵中&#xff0c;a:b 代表的含义是范围是从 a--b 则&#xff0c;当 a 和 b 被省略时&#xff0c;代表的范围就是最大范围&#xff08;1--n&#xff09; or &#…

竞赛选题 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

通过RSYNC在linux和windows间同步文件

通过RSYNC在linux和windows间同步文件 下载windows版本rsync下载后是一个zip的压缩包&#xff0c;直接解压就可使用配置windows到linux的秘钥拷贝公钥文件到linux服务器&#xff0c;实现免密配置同步命令结合windows计划任务实现定时同步文件 下载windows版本rsync 下载链接 h…

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动 RedisNginxNacosKafka Redis 1.打开cmd终端&#xff0c;进入redis文件目录 2.输入redis-server.exe redis.windows.conf即可启动&#xff0c;不能关闭cmd窗口 &#xff08;端口配置方式&#xff1a;redis目录下的redis.windows.conf配置文件&#xff0c;…

MV*结构的发展

一&#xff0c;MVC Model模型&#xff0c;View视图&#xff0c;Controller控制器 理解&#xff1a; MVC就是将最原始的繁琐流程进行模块化&#xff0c;Model负责从数据库取数据&#xff0c;View负责展示获取的数据&#xff0c;用户在View进行操作&#xff0c;Controller处理…

Android13 通知栏和设置显示中添加副屏亮度条,调节副屏亮度

由于台式的Android设备&#xff0c;存在着两个屏幕显示的情况&#xff0c;故需要对Android系统开发一个可以调节副屏亮度的功能。 提交副屏亮度调节的效果如下&#xff1a; 涉及修改的文件如下&#xff1a; frameworks/base/services/core/java/com/android/server/am/Acti…

《PostgreSQL中的JSON处理:技巧与应用》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

【LeetCode-中等题】150. 逆波兰表达式求值

文章目录 题目方法一&#xff1a;栈 题目 方法一&#xff1a;栈 class Solution {public int evalRPN(String[] tokens) {Deque<Integer> deque new LinkedList<>();String rpn "-*/";//符号集 用来判断扫描的是否为运算符int sum 0;for(int i 0 ; i…

【PyTorch 攻略 (3/7)】线性组件、激活函数

一、说明 神经网络是由层连接的神经元的集合。每个神经元都是一个小型计算单元&#xff0c;执行简单的计算来共同解决问题。它们按图层组织。有三种类型的层&#xff1a;输入层、隐藏层和输出层。每层包含许多神经元&#xff0c;但输入层除外。神经网络模仿人脑处理信息的方式。…