powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / применить цикл к столбцу таблицы построчно
7 сообщений из 7, страница 1 из 1
применить цикл к столбцу таблицы построчно
    #37857519
proof666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще пока не очень опытен в sql, поэтому нужна помощь...

1. имеется таблица, в которой один из столбцов содержит даты (CreatedOn)
2. имеется цикл, прибавляющий заданное количество дней к заданной дате с помощью таблицы-календаря (дата и статус 1-рабочий,0- не рабочий):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DECLARE  @StartDate datetime, @EndDate datetime, @finish bit, @CTDay int

SET @StartDate='2012-06-01 05:54:53' -- дата к котрой нужно прибавить рабочие дни

SET @CTDay = 5 --количество прибавляемых дней
SET @finish=0
SET @EndDate=CONVERT(datetime, @StartDate)


WHILE @finish=0
BEGIN
	SET @EndDate=dateadd(dd,1,@EndDate)
	IF EXISTS(select sum(isHoliday) from Calendar where dt between @StartDate and @EndDate having sum(isHoliday) = @CTDay) SET @finish=1
END
select @EndDate



Как к исходной таблице добавить столбец с новой рассчитанной датой (т.е. рассчитанной для каждой строки)?
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37857600
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proof666Как к исходной таблице добавить столбец с новой рассчитанной датой
Столбцы в таблицу добавляются командой ALTER TABLE
А ваш цикл надо выкинуть и написать один запрос
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37858225
proof666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критика это хорошо :)
И все же, как я понимаю нужно использовать курсор... но вот как это сделать не понимаю...
может есть другие способы?
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37858245
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proof666Критика это хорошо :)
И все же, как я понимаю нужно использовать курсор... но вот как это сделать не понимаю...
может есть другие способы?Какой-такой курсор-мурсор?!
А если так?
Код: sql
1.
2.
3.
4.
SELECT [EndDate]=MIN(C.dt)
FROM Calendar C
WHERE C.dt>=DATEADD(DAY,@CTDay,@StartDate) AND C.isHoliday=0
AND (SELECT COUNT(*) FROM Calendar CC WHERE CC.dt>=@StartDate AND CC.dt<=C.dt AND C.isHoliday=0)=@CTDay;

Написал чисто умозрительно (таблицы Calendar под рукой нет).
Так что может быть и неправ...
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37858246
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapproof666Критика это хорошо :)
И все же, как я понимаю нужно использовать курсор... но вот как это сделать не понимаю...
может есть другие способы?Какой-такой курсор-мурсор?!
А если так?
Код: sql
1.
2.
3.
4.
SELECT [EndDate]=MIN(C.dt)
FROM Calendar C
WHERE C.dt>=DATEADD(DAY,@CTDay,@StartDate) AND C.isHoliday=0
AND (SELECT COUNT(*) FROM Calendar CC WHERE CC.dt>=@StartDate AND CC.dt<=C.dt AND C.isHoliday=0)=@CTDay;

Написал чисто умозрительно (таблицы Calendar под рукой нет).
Так что может быть и неправ...Ошибся:
Код: sql
1.
2.
3.
4.
SELECT [EndDate]=MIN(C.dt)
FROM Calendar C
WHERE C.dt>=DATEADD(DAY,@CTDay,@StartDate) AND C.isHoliday=0
AND (SELECT COUNT(*) FROM Calendar CC WHERE CC.dt>=@StartDate AND CC.dt<=C.dt AND СC.isHoliday=0)=@CTDay;
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37859799
proof666
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

спасибо конечно, но этот запрос выдает не верный результат, логика не много не соответствует моей задаче...
...
Рейтинг: 0 / 0
применить цикл к столбцу таблицы построчно
    #37860019
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proof666iap,

спасибо конечно, но этот запрос выдает не верный результат, логика не много не соответствует моей задаче...
ну так поясните логику вашей задачи, лучше с конкретными данными, и чем не подходит результат работы запроса iap
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / применить цикл к столбцу таблицы построчно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]