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

Откуда:
Сообщений: 9
Добрый день, прошу помочь в составлении запроса - имеется таблица с ID и датами, нужно добавить к каждому ID строки +30 дней по датам

Исходная:
автор
ID Date
1 2015-12-01
2 2016-09-26


Необходимо:
автор
ID Date
1 2015-12-01
1 2015-12-02
1 2015-12-03
- - - - - - - - - - -
2 2016-09-26
2 2016-09-27
2 2016-09-28
29 апр 21, 12:49    [22316274]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8587
Dolphiin,

таблица чисел от 1 до 29, прибавляйте...
29 апр 21, 13:00    [22316289]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Dolphiin
Member

Откуда:
Сообщений: 9
автор
таблица чисел от 1 до 29, прибавляйте...


Понимаю что глупый вопрос, но как именно это сделать? Опыта в sql немного, поэтому и спрашиваю тут. Сам гуглил как составлять последовательность дат по заданному диапазону через функцию, но пока не получается сделать её с привязкой к ID
29 апр 21, 13:16    [22316304]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Wlr-l
Member

Откуда:
Сообщений: 539
Например, так можно получить даты, которые нужно добавить.

with a(id, d) as (  -- здесь должна быть ваша таблица
  select 1, '20151201'  union all
  select 2, '20160926'
) 
, b as (  -- таблица чисел от 1 до 3
  select number as n from master.dbo.spt_values where type='P' and number between 1 and 3
) 

select a.id, dateadd(day, b.n, a.d) as newD 
  from       a
  cross join b
  order by a.id, newD;

Осталось полученные даты вставить в вашу таблицу.
29 апр 21, 13:36    [22316325]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Dolphiin
Member

Откуда:
Сообщений: 9
Wlr-l,

Спасибо, только у меня не находит эту системную таблицу(

автор
select *
from master..spt_values


Reference to database and/or server name in 'master..spt_values' is not supported in this version of SQL Server.
29 апр 21, 14:30    [22316376]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Wlr-l
Member

Откуда:
Сообщений: 539
Dolphiin,

За время, прошедшее с момента дачи вам совета "таблица чисел от 1 до 29, прибавляйте", уже можно было бы создать таблицу чисел

create table dbo.ii(i int not null primary key clustered);

и вбить в нее руками 30 строк.

Еще лучше создать постоянную таблицу дат.
29 апр 21, 15:18    [22316421]     Ответить | Цитировать Сообщить модератору
 Re: Добавление строк с диапазоном дат  [new]
Dolphiin
Member

Откуда:
Сообщений: 9
Wlr-l,

Благодарю, теперь все получилось таким способом.

автор
Еще лучше создать постоянную таблицу дат.


Если отдельная таблица календарь, можно как-то вместе с ней это же сделать?
29 апр 21, 15:43    [22316433]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить