2015-11-04 2 views
-2

Интересно, может ли кто-нибудь рассказать мне, как я могу получить следующие 5 доступных дат, используя таблицу, в которой хранятся только выходные дни и дни банковских посещений. Поэтому он должен выбрать следующие 5 дней, сталкиваются с любыми датами в таблице.Следующие 5 Доступные даты

Я хотел бы видеть следующие результаты этого списка дат:

07/11/2015 (Saturday) 
08/11/2015 (Sunday) 
09/11/2015 (Holiday) 
14/11/2015 (Saturday) 
15/11/2015 (Sunday) 

Результаты:

05/11/2015 (Thursday) 
06/11/2015 (Friday) 
10/11/2015 (Tuesday) 
11/11/2015 (Wednesday) 
12/11/2015 (Thursday)` 
+0

насчет попробовать что-то и опубликовать вопрос – ehh

+0

Не совсем уверен, с чего начать .. –

+0

Как насчет записей выборки и ожидаемого результата по крайней мере –

ответ

1

на основе ограниченной информации, вот быстрый хак:

with offsets(n) as (
    select 1 union all 
    select 2 union all 
    select 3 union all 
    select 4 union all 
    select 5 union all 
    select 6 union all 
    select 7 union all 
    select 8 union all 
    select 9 union all 
    select 10 union all 
    select 11 
) 
select top 5 dateadd(dd, n, cast(getdate() as date)) as dt from offsets 
where dateadd(dd, n, cast(getdate() as date) not in (
    select dt from <exclude_dates> 
) 
order by dt 
+0

С Рождеством вы можете получить только 4 результата (2 раза в неделю + 2 дня рождества), лучший союз с 11. – Alfons

+0

Спасибо Shawnt00 .. Я думаю, что это именно то, что мне нужно. Я видел что-то похожее только на рабочие дни (не включая выходные), но не был уверен, смогу ли я использовать его. Думаю, я должен был разместить его, как ребята в верхней части, предлагаемые в любом случае. Большое вам спасибо, я уверен, что это поможет мне. –

+0

@Alfons Да, я думал, что 10, вероятно, это был хороший сценарий, чтобы поймать. – shawnt00

1

Возможным решением является создание таблицы всех возможных дат в год.

select top 5 date 
from possible_dates 
where date not in 
    (select date from unavailable_dates) 
and date > [insert startdate here] 
order by date 
Смежные вопросы