SQL Server查询到“ ftatten”数据以进行报告

问题描述 投票:0回答:1

假设我有一个具有以下数据的表,结构如下。我正在尝试查询数据以查找某人(雇员)工作的日期范围。

  NAME     WORKED        DATE   
  Bob       YES         1/1/2019
  Bob       YES         1/2/2019
  Bob       YES         1/3/2019
  Bob       NO          1/4/2019
  Bob       YES         1/5/2019
  Bob       YES         1/6/2019
  Bob       NO          1/7/2019
  Jane      Yes         1/1/2019
  Jane      Yes         1/2/2019
  Jame      No          1/3/2019

预期结果:(我需要的结果)

Bob 1/1/2019 - 1/3/2019
Bob 1/5/2019 - 1/6/2019
Jane 1/1/2019 - 1/2/2019

返回此结果集的查询的SQL语法(SQL Server 2008+)是什么?提前谢谢

sql sql-server
1个回答
1
投票

这是一个孤岛问题。您可以使用row_number()和某些日期算法来识别行。

因此,假设每个日期都有一行:

select name, min(date), max(date)
from (select t.*,
             row_number() over (partition by name order by date) as seqnum
      from t
      where worked = 'YES'
     ) t
group by name,
         dateadd(day, - seqnum, date);
© www.soinside.com 2019 - 2024. All rights reserved.