计算日期范围内缺少的日期顺序

时间:2014-12-24 18:03:38

标签: date count sql-server-2012 sequence

我在下表中列出了每个标识符的缺失日期, 我想确定错过序列的次数。

从下表中对于标识符3的含义,日期序列错过了三次。  那是来自

  1. 12/02/2024至12/04/204 ---第一次
  2. 12/09/2024至12/12/204 ---第二次
  3. 12/19/2024至12/22/204 ---第三次
  4. 标识符4的

    1. 12/02/2024至12/04/204 ---第一次
    2. 12/09/2024至12/12/204 ---第二次
    3. 12/19/2024至12/22/204 ---第三次
    4. 12/27/2024至12/29/204 ---第四次
    5. 标识符5的

      1. 12/24/2024是缺少的日期
      2. 所以我期待的输出是

        Identifier  count of missed seq dates
        
        3              3
        4              4
        5              1
        

        请使用表格:

        DECLARE @table TABLE (IDENTi VARCHAR(50),  StartDate DATETIME)
        
        INSERT INTO @table VALUES ('3', '12/1/2024 ')
        INSERT INTO @table VALUES ('3', '12/5/2024 ')
        INSERT INTO @table VALUES ('3', '12/6/2024 ')
        INSERT INTO @table VALUES ('3', '12/7/2024 ')
        INSERT INTO @table VALUES ('3', '12/8/2024 ')
        INSERT INTO @table VALUES ('3', '12/13/2024')
        INSERT INTO @table VALUES ('3', '12/14/2024')
        INSERT INTO @table VALUES ('3', '12/15/2024')
        INSERT INTO @table VALUES ('3', '12/16/2024')
        INSERT INTO @table VALUES ('3', '12/17/2024')
        INSERT INTO @table VALUES ('3', '12/18/2024')
        INSERT INTO @table VALUES ('3', '12/23/2024')
        INSERT INTO @table VALUES ('3', '12/24/2024')
        INSERT INTO @table VALUES ('3', '12/25/2024')
        INSERT INTO @table VALUES ('3', '12/26/2024')
        INSERT INTO @table VALUES ('3', '12/27/2024')
        INSERT INTO @table VALUES ('3', '12/28/2024')
        INSERT INTO @table VALUES ('3', '12/29/2024')
        INSERT INTO @table VALUES ('3', '12/30/2024')
        INSERT INTO @table VALUES ('4', '12/1/2024 ')
        INSERT INTO @table VALUES ('4', '12/5/2024 ')
        INSERT INTO @table VALUES ('4', '12/6/2024 ')
        INSERT INTO @table VALUES ('4', '12/7/2024 ')
        INSERT INTO @table VALUES ('4', '12/8/2024 ')
        INSERT INTO @table VALUES ('4', '12/13/2024')
        INSERT INTO @table VALUES ('4', '12/14/2024')
        INSERT INTO @table VALUES ('4', '12/15/2024')
        INSERT INTO @table VALUES ('4', '12/16/2024')
        INSERT INTO @table VALUES ('4', '12/17/2024')
        INSERT INTO @table VALUES ('4', '12/18/2024')
        INSERT INTO @table VALUES ('4', '12/23/2024')
        INSERT INTO @table VALUES ('4', '12/24/2024')
        INSERT INTO @table VALUES ('4', '12/25/2024')
        INSERT INTO @table VALUES ('4', '12/26/2024')
        INSERT INTO @table VALUES ('4', '12/30/2024')
        INSERT INTO @table VALUES ('5', '12/23/2024')
        INSERT INTO @table VALUES ('5', '12/25/2024')
        

1 个答案:

答案 0 :(得分:1)

这是快速变体:

select IDENTi, count(*)
from tt as a
where
datediff(day, (select max(StartDate) from tt as b where a.IDENTi=b.IDENTi and a.StartDate>b.StartDate), a.StartDate)>1
group by IDENTi

http://sqlfiddle.com/#!6/00fda/11