在SQL中计算顺序日期

时间:2018-02-15 17:48:36

标签: sql date count

所以我一直在寻找Stack,无法找到满足我特殊需求的解决方案。

所以目前我正在尝试计算Pat的检查实践 - 这是我的表和我想要实现的一些注意事项(仅供参考 - 尝试使用T-SQL解决解决方案)< / p>

  1. 当存在相同的Pat ID和相同的练习并且日期是连续的
  2. 时,将考虑签入
  3. 其他明智的新支票
  4. enter image description here

    所以有一个分组列,表明PatID和PracticeID是相同的,并按日期排序 - 但是 - 我似乎无法绕过试图查看前一个EndDate并看到下一个Row的开始日期是连续的。

    我认为它需要一些Recursion / Cursor的东西,但我不完全确定从哪里开始。

    所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

以下查询应仅返回您的表中PatID / PracticeID组合的行,对于这些组合,您的表格中不存在同一组合但具有DateEnd的行是DateStart之前的一个日期。

SELECT o.PatID, o.PracticeID
  FROM <table> o
 WHERE NOT EXISTS( SELECT 1
                     FROM <table> i
                    WHERE o.PatID = i.PatID
                      AND o.PracticeID = i.PracticeID
                      AND DATEDIFF(d, i.DateEnd, o.DateStart) = 1 )
 GROUP BY o.PatID, o.PracticeID

注意:i.DateEndo.DateStart的顺序可能需要颠倒。