如何获取数据直到下一个数字

时间:2015-06-30 21:39:58

标签: 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
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个工作日获取数据,并且不要包含从一个开始的数字(例如排除前面有*的行)。这需要是动态的。由于DayName将针对每个数字进行更改,因此我无法在where子句中包含该数字。

1 个答案:

答案 0 :(得分:0)

让我假设您有一个约会日期,因此您需要从该日期到下一个“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
               );