Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дни недели  [new]
blest
Member

Откуда:
Сообщений: 554
Есть последовательность рабочих дней в неделю в табличном виде 1, 2, 3, 4, 7.
По условию отрезок рабочих дней непрерывный.
Как привести данный массив дней недель в виде отрезка 7-4, т.е. Сб-Ср ?
11 апр 13, 12:56    [14166661]     Ответить | Цитировать Сообщить модератору
 Re: Дни недели  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
select day
from days
order by case when day=7 then 0 else day end asc

Это в частном случае
11 апр 13, 13:06    [14166726]     Ответить | Цитировать Сообщить модератору
 Re: Дни недели  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
-- test data
declare @t table(n int)
insert into @t values (1), (2), (3), (4), (7)
-- end of test data

select top 1
       case when min(nn) > 7 then min(nn) - 7 else min(nn) end
      ,case when max(nn) > 7 then max(nn) - 7 else max(nn) end
  from (select nn, nn - row_number() over(order by nn) as gg
          from (select t.n + 7 * c.m as nn
                  from @t as t
                 cross join (select 0 as m union select 1) as c) as tt) as t2
 group by gg
 order by count(*) desc
тестируйте
11 апр 13, 13:10    [14166756]     Ответить | Цитировать Сообщить модератору
 Re: Дни недели  [new]
blest
Member

Откуда:
Сообщений: 554
Паганель
-- test data
declare @t table(n int)
insert into @t values (1), (2), (3), (4), (7)
-- end of test data

select top 1
       case when min(nn) > 7 then min(nn) - 7 else min(nn) end
      ,case when max(nn) > 7 then max(nn) - 7 else max(nn) end
  from (select nn, nn - row_number() over(order by nn) as gg
          from (select t.n + 7 * c.m as nn
                  from @t as t
                 cross join (select 0 as m union select 1) as c) as tt) as t2
 group by gg
 order by count(*) desc
тестируйте


Большое спасибо!
Вот так запрос вышел.
11 апр 13, 13:13    [14166781]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить