【问题标题】:SQL Count Consecutive Days per line每行 SQL 计数连续天数
【发布时间】:2020-08-04 18:07:37
【问题描述】:

希望获得每行的“总连续天数”。

Shift 表包含 ShiftId、ClientID、ServiceId 和 ProviderID ShiftDetails 表有日期。

可以有多个班次具有相同的 ShiftId、ClientID、ServiceId 甚至可以有重复的日期。

想要进行多次“连续总天数”计算。 每个 ClientID 的连续天数 每个 ClientID 和 ServiceID 的连续天数 每个 ClientID 、 ServiceID 和 ProviderID 的连续天数。

SQL Fiddle

【问题讨论】:

  • 请向我们展示您的尝试。

标签: sql sql-server recursive-query sql-server-2017 gaps-and-islands


【解决方案1】:

这是一个孤岛问题。您可以通过从日期中减去一系列整数来识别岛屿——恒定的差异识别相邻的日期。然后使用count(*)作为窗口函数:

select t.*,
       count(*) over (partition by clientid, serviceid, dateadd(day, -seqnum, date)) as consecutive_days
from (select t.*,
             row_number() over (partition by clientid, serviceid order by date) as seqnum
      from t
     ) t

【讨论】:

  • 试图将其转换为我的数据。它没有返回所需的结果。向问题添加了查询。
  • @monsey11。 . .设置一个 db fiddle。
  • 这里sqlfiddle.com/#!18/8861e5/1@/gordon-linoff
猜你喜欢
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2023-03-25
  • 2021-02-03
相关资源
最近更新 更多