星空网 > 软件开发 > 数据库

找出范围内丢失的数据

数据库环境 SQL SERVER2008R2

需求:有一个表的日期字段,存的是每天的日期,且该字段存在唯一性约束。由于管理员误操作,把当前月的一些日期给删了,

现在要把被删除的日期给找出来。

实现思路:创建一个日期辅助表,辅助表存的是当前月的所有日期,再和目标表左关联,日期对应不上的则是丢失的日期。

数据准备:

1.创建一个1-100的自然数列表

SELECT TOP 100    id = IDENTITY( INT,1,1 )INTO  dbo.t100FROM  sysobjects

2.模拟生成丢失日期的目标表,日期对应的天数能被3或者7整除的都是丢失的日期

/*取到当前月的月初和月末日期*/WITH  x0     AS ( SELECT  CONVERT(DATE, DATEADD(d, -DAY(GETDATE()) + 1,                       GETDATE())) AS date_begin ,            CONVERT(DATE, DATEADD(d, -DAY(GETDATE()),                       DATEADD(m, 1, GETDATE()))) AS date_end       ),/*生成日期序号*/    x1     AS ( SELECT  date_begin ,            date_end ,            DATEDIFF(d, date_begin, date_end) + 1 AS nday        FROM   x0       ),/*遍历本月的日期*/    x2     AS ( SELECT  ddate ,            id        FROM   ( SELECT  DATEADD(d, id - 1, date_begin) AS ddate ,                  id             FROM   t100                  LEFT JOIN x1 ON t100.id <= x1.nday            ) t        WHERE  ddate IS NOT NULL       )  SELECT ddate  INTO  testDate  FROM  x2  WHERE  ( id % 3 != 0 )      AND ( id % 7 != 0 )

3.找出缺失的日期

SELECT x2.*FROM  x2    LEFT JOIN testDate ON x2.ddate = testDate.ddateWHERE  testDate.ddate IS NULL

好了,我们来对比一下数据,左边是目标表,右边是缺失日期数据集,刚好对得上。

找出范围内丢失的数据找出范围内丢失的数据

 




原标题:找出范围内丢失的数据

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊listing广告策略如何分析?:https://www.ikjzd.com/articles/97926
亚马逊爆款打造5大要素及注意事项!:https://www.ikjzd.com/articles/97927
VAT基础知识②标准税率&低税率,到底怎么选?:https://www.ikjzd.com/articles/97928
图文详解:JUMIA如何添加收款方式?:https://www.ikjzd.com/articles/97929
一周内2个柜子被查!出货前这些准备一定要做好!:https://www.ikjzd.com/articles/97933
亚马逊FBA头程物流如何选择?:https://www.ikjzd.com/articles/97934
十月北方旅游最佳去处?:https://www.vstour.cn/a/365184.html
缅甸电子签证口岸 缅甸电子签证在线申请:https://www.vstour.cn/a/365185.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流