Sql 如何获取数据直到下一个1号
我有一个日期表,在那里我分配了工作日。例如,我需要在下一个数字1之前从1-20处获得业务。我该怎么做?这是我桌子上的一个小版本: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
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个工作日剩余工作日保留列