补充缺失日期及对应数据,找出范围内丢失的数据【永利皇宫登录网址】

急需:有三个表的日期字段,存的是每一日的日子,且该字段存在唯生机勃勃性限定。由于管理员误操作,把目前月的风华正茂对日期给删了,

   
永利皇宫登录网址 1

 

View Code

好了,我们来看待一下数量,左侧是目的表,左侧是缺点和失误日期数据集,刚好对得上。

View Code

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

  实现的功效如图2(数据太多,已省略部分)

多少筹划:

日子字段的日子是不总是的。必要:补整天期,对应的数量为上叁个日子的数目除于7。

数据库情状 SQL SEHighlanderVELacrosse二零零六宝马7系2

  实现

2.模仿生成错失日期的目的表,日期对应的命局输手艺被3还是7整除的都是错失的日期

  达成思路:

今日要把被删去的日子给寻觅来。

WITH  tmp     AS ( SELECT  DATEADD(d, number, '2015-10-03') d ,            number % 7 number        FROM   master..spt_values        WHERE  type = 'P'            AND DATEADD(d, number, '2015-10-03') <= '2015-10-24'       )  SELECT d ,      CASE WHEN tmp1.cdate IS NULL THEN t.num / 7         ELSE tmp1.num      END AS num  FROM  tmp      LEFT JOIN test tmp1 ON tmp.d = tmp1.cdate      OUTER APPLY ( SELECT TOP 1                  *             FROM   test tmp1             WHERE   tmp.d > cdate             ORDER BY cdate DESC            ) t

得以完成思路:创制二个日子帮忙表,协助表存的是当前段时间的有所日期,再和指标表左关联,日期对应不上的则是遗失的日期。

  有三个数据表,独有2个字段,叁个是日期字段,另一个是数量字段,当中,

/*取到当前月的月初和月末日期*/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 )

  大家仍可以够再提高一下急需,再总计结果的手续,不再是除于固定值7,而是除于多少个日子

3.寻找缺点和失误的日子

永利皇宫登录网址 2永利皇宫登录网址 3

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

View Code

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

    
永利皇宫登录网址 4

网站地图xml地图