补全日期范围并查询
来源:互联网 发布:腾讯绿标域名跳转代码 编辑:程序博客网 时间:2024/05/18 00:33
原贴:点击打开链接
/*ID 产品ID 计划开始日期 开始班次 计划结束日期 结束班次1 P111 2017-10-10 早班 2017-10-12 晚班2 P112 2017-10-10 晚班 2017-10-12 早班希望得到结果:比如 2017-10-10 早班的记录:ID 产品ID 1 P111 比如 2017-10-10 晚班的记录:ID 产品ID 1 P111 2 P112 比如 2017-10-12 晚班的记录:ID 产品ID 1 P111 */USE tempdbGOIF OBJECT_ID('t') IS NOT NULL DROP TABLE tGOSET NOCOUNT ONCREATE TABLE t(Id INT,productId VARCHAR(20),planBeginTime DATETIME,beginFlag NCHAR(2),planEndTime DATETIME,endFlag NCHAR(2))INSERT INTO t VALUES (1,'P111','2017-10-10','早班','2017-10-12','晚班')INSERT INTO t VALUES (2,'P112','2017-10-10','晚班','2017-10-12','早班')IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp;WITH cte(Id,productId,planTime,flag ) AS (SELECT Id,productId,DATEADD(DAY,sv.number,planBeginTime),tmp.flag FROM t CROSS APPLY MASTER.dbo.spt_values AS sv CROSS APPLY (SELECT '早班' as flag UNION ALLSELECT '晚班' as flag ) AS tmpWHERE sv.[type]='P' AND sv.number BETWEEN 0 AND DATEDIFF(DAY,t.planBeginTime,t.planEndTime))SELECT * INTO #tmpFROM cte a WHERE NOT EXISTS (SELECT * FROM t b WHERE b.id=a.id AND b.planBeginTime=a.planTime AND b.beginFlag='晚班' AND a.flag='早班') AND NOT EXISTS (SELECT * FROM t c WHERE c.id=a.id AND c.planEndTime=a.planTime AND c.endFlag='早班' AND a.flag='晚班')/*Id productId planTime flag----------- -------------------- ----------------------- ----1 P111 2017-10-10 00:00:00.000 早班1 P111 2017-10-10 00:00:00.000 晚班1 P111 2017-10-11 00:00:00.000 早班1 P111 2017-10-11 00:00:00.000 晚班1 P111 2017-10-12 00:00:00.000 早班1 P111 2017-10-12 00:00:00.000 晚班2 P112 2017-10-10 00:00:00.000 晚班2 P112 2017-10-11 00:00:00.000 早班2 P112 2017-10-11 00:00:00.000 晚班2 P112 2017-10-12 00:00:00.000 早班*/SELECT Id,productId FROM #tmp WHERE planTime='2017-10-10' AND flag='早班'/*Id productId----------- --------------------1 P111*/SELECT Id,productId FROM #tmp WHERE planTime='2017-10-10' AND flag='晚班'/*Id productId----------- --------------------1 P1112 P112*/SELECT Id,productId FROM #tmp WHERE planTime='2017-10-12' AND flag='晚班'/*Id productId----------- --------------------1 P111*/DROP TABLE #tmp
阅读全文
0 0
- 补全日期范围并查询
- Oracle自动补全日期,空数据为0
- 最全日期控件
- 关于全日期的统计
- postgresql 按日期范围查询
- mongodb对日期范围查询
- postgresql 按日期范围查询
- 按日期范围查询ID断号情况,并进行聚合求和
- morphia操作mongodb对日期范围查询
- 按日期查询 并求和
- 2013-07-08期-范围查询及结果排序
- MongoDB 日期查询与mongodump 按日期范围导出数据
- sql语句中日期时间格式化查询 sql查询日期范围
- 范围查询
- 范围查询
- mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法。
- mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法
- mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法。
- go package
- 开通博客了
- new File(path) app挂掉
- 打印等边三角形
- springbean的装配
- 补全日期范围并查询
- python3 的简单练习
- linux常用基本命令
- [视野] AI创业必知6大核心问题:如何选择赛道、搭配团队和应对巨头挑战
- 第五单元
- human pose regression by combining indirect part detection and contextual information
- 2.1最简单的结构——线性表
- PDF.js开发笔记
- Qt如何上传zip文件(两种形式),及随机生成规定长度的字符串的小方法