首页 > 数据库 >sql server生成时间序列

sql server生成时间序列

时间:2024-02-05 15:00:55浏览次数:55  
标签:startDate StartDate t1 Date sql 序列 calendar server SELECT

DECLARE @startDate DATE = '2024-01-01';

-- 定义结束日期
DECLARE @endDate DATE = DATEADD(DAY, 365, @startDate)

-- 生成日期序列
;
WITH DateSequence AS (SELECT @startDate AS [Date],
            1 AS [DayNumber]
    UNION ALL
    SELECT DATEADD(DAY, 1, [Date]),
            [DayNumber] + 1
    FROM DateSequence  
    WHERE [Date] < @endDate),
calendar AS (SELECT d.ID,
            EmpId,
            CONVERT(VARCHAR(10), StartDate, 120) AS StartDate,
            CONVERT(VARCHAR(10), EndDate, 120) AS EndDate,
            TypeId,
            LocationId,
            d.Days
    FROM dbo.Etad_Calendar d WHERE d.TypeId = 'Travel (TL)' OR d.TypeId LIKE '%Leave%'),
k AS (
SELECT YEAR([Date]) AS Year,
		MONTH(t1.Date) Month,
		--YEAR([Date]) + '-' + MONTH(t1.Date) AS MonthStr,
        calendar.*
FROM DateSequence  AS t1 
    INNER JOIN calendar
        ON t1.Date >= calendar.StartDate
            AND t1.Date <= calendar.EndDate
    INNER JOIN dbo.Employee AS emp
        ON emp.EmployeeNo = calendar.EmpId
WHERE emp.DEPT = 'MCS'
        AND emp.COE = 'MCS_OTSS'
        AND emp.Active = 'Active'
)

SELECT k.Year,k.Month,k.TypeId,COUNT(k.TypeId) AS TypeCount FROM k  GROUP BY k.Year,k.Month,k.TypeId OPTION (maxrecursion 0)

 

标签:startDate,StartDate,t1,Date,sql,序列,calendar,server,SELECT
From: https://www.cnblogs.com/duixue/p/18008190

相关文章

  • oracle常用sql
    --备份tbluser的数据到tbluser_bak中createtabletbluser_bakasselect*fromtbluser;--此处不加as也行--删除备份表的数据truncatetabletbluser_bak;--还原表数据insertintotbluser_bakselect*fromtbluser;--查看数据是否恢复select*fromtbluser_bak;-......
  • 踩坑了,MySQL数据库生成大量奇怪的大文件
    作者:田逸(formyz)一大早就收到某个数据库服务器磁盘满的报警信息,其中数据盘使用率超过90%,如下图所示。这是一台刚上线不久的MySQL从库服务器,数据盘的总容量是300G。先登录系统,查看主从同步是否正常,幸运的是主从同步正常;再看看磁盘空间的使用情况,执行的命令及输出如下。df-h[root@MyS......
  • SQL数据库入门03:数据库表的完整性约束、索引与视图的操作
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。(数据库基础(三):完整性约束、索引、视图)  系列文章中示例数据来源于《SQLServer实验指导(2005版)》一书。依据本系列文章的思想与对操作步骤、代码的详细解释,大家用......
  • Mybatis 的 SqlSession 和一级缓存为什么失效?
    目录SqlSession是什么SqlSession分类SqlSession的创建为什么和Spring整合后的SqlSession一级缓存偶尔会失效一级缓存和二级缓存总结SqlSession是什么SqlSession是Mybatis中定义的,用来表示与关系数据库的一次会话,会话定义了各种具体的操作,查询、数据更新(包含保存、更新、删......
  • mysql模糊查询如何能用到索引?
    mysql模糊查询%我就不多说了。想要%不在左边也能用到索引,可以选择加全文索引假设我的表是wa_log记录日志的,url是访问的路径,想要查询url路径中包含admin的数据ALTERTABLEwa_logADDFULLTEXT(url);EXPLAINSELECT*FROMwa_logWHEREMATCH(url)AGAINST('admin'INBOOLEAN......
  • .net通过共享文件方式读取SQLLite数据库整理两种方案
    项目环境:win10,框架.net6.0问题描述:客户现场有一台测量设备,测量数据存放在测量设备本地SQLLite中,应用服务器存在另一台电脑上,客户希望通过共享文件方式读取SQLLite中的数据定时同步到应用服务器上进行查询展示。解决方案:网上搜了一下资料整理了一下大概两种方法:1.没有账号密......
  • mysql如何实现左连接、右连接
    学生表 students学生ID学生姓名1张三2李四3王五4小六5小七成绩表 grades学生ID课程学生成绩1数学862语文793数学914英语881、查询所有学生的id、姓名、成绩用左连接可以实现:SELECTstudents.学生ID,students.学生姓名,grades.成绩FROMstudentsLEFTJOINgradesONstudents.......
  • postgresql-时间函数
    PostgreSQL-version9.4.241.系统当前时间selectnow();--天、时分秒2022-09-2915:50:13.273269+08selectcurrent_date;--天2022-09-29selectcurrent_time;--时分秒15:50:13.507701+08selectcurrent_timestamp;--天、时分秒2022-09-2915:50:......
  • mysql-自定义函数
    0、结构delimiter$$--修改语句结束符,mysql默认的结束符是分号,为了在函数体中避免遇到分号就结束,重新定义结束符createfunction函数名(形参)returns返回值类型begin//函数体return返回值数据;end$$delimiter;--将语句结束符修改回来1、变......
  • 【数据库】PostgreSQL中的DISTINCT ON和DISTINCT的区别
    深入理解PostgreSQL中的DISTINCTON和DISTINCT在数据库查询中,我们经常会遇到需要去除重复数据的情况。在PostgreSQL中,我们可以使用DISTINCT和DISTINCTON来实现这个目标。那么,它们之间有什么区别呢?本文将详细介绍这两种方法的用法、区别以及适用场景。DISTINCT的基本用法DISTIN......