Sql 如何获取数据直到下一个1号

Sql 如何获取数据直到下一个1号,sql,sql-server,Sql,Sql Server,我有一个日期表,在那里我分配了工作日。例如,我需要在下一个数字1之前从1-20处获得业务。我该怎么做?这是我桌子上的一个小版本: Date Day BusinessDays 2015-05-01 Friday 1 2015-05-02 Saturday 2 2015-05-03 Sunday 2 2015-05-04 Monday 2 2015-05-05 Tuesday 3 2015-05-06 Wednesday 4

我有一个日期表,在那里我分配了工作日。例如,我需要在下一个数字1之前从1-20处获得业务。我该怎么做?这是我桌子上的一个小版本:

Date        Day       BusinessDays 
2015-05-01  Friday     1
2015-05-02  Saturday   2
2015-05-03  Sunday     2
2015-05-04  Monday     2
2015-05-05  Tuesday    3
2015-05-06  Wednesday  4
2015-05-07  Thursday   5
2015-05-08  Friday     6
2015-05-09  Saturday   7
2015-05-10  Sunday     7
2015-05-11  Monday     7
2015-05-12  Tuesday    8
2015-05-13  Wednesday  9
2015-05-14  Thursday   10
2015-05-15  Friday     11
2015-05-16  Saturday   12
2015-05-17  Sunday     12
2015-05-18  Monday     12
2015-05-19  Tuesday    13
2015-05-20  Wednesday  14
2015-05-21  Thursday   15
2015-05-22  Friday     16
2015-05-23  Saturday   17
2015-05-24  Sunday     17
2015-05-25  Monday     17
2015-05-26  Tuesday    17
2015-05-27  Wednesday  18
2015-05-28  Thursday   19
2015-05-29  Friday     20
*2015-05-30 Saturday   1
*2015-05-31 Sunday     1
*2015-06-01 Monday     1
*2015-06-02 Tuesday    2
*2015-06-03 Wednesday  3

我需要获取1到20个工作日的数据,不包括从1开始的数字,例如,不包括前面有*的行。这需要是动态的。因为每个数字的DayName都会更改,所以我不能将其包含在我的where子句中。

让我假设您心中有一个日期,所以您希望从该日期到下一个1的所有内容

select t.*
from datetable t
where t.date >= '2015-05-01' and
      t.date < (select min(t2.date)
                from datetable t2
                where t2.date > '2015-05-01' and
                      t2.businessdays = 1
               );

事实上我没有。我需要具体的月份数据。但正如表中所示,在businessDays列中,1位于表的底部,实际上是6月份的数据。因此,这里的日期将不起作用,因为5月底周六和周日被视为下一个周一的工作日-在这种情况下,这是6月的开始,因此这是6月的数据。有一点我可以肯定,如果周六和周日DayName列是最后一个工作日,周一是新的月份工作日,那么周六和周日将是最后一个工作日工作日1。此外,周六和周日将有0个工作日剩余工作日保留列