Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / применить цикл к столбцу таблицы построчно / 7 сообщений из 7, страница 1 из 1
27.06.2012, 17:27
    #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
27.06.2012, 18:00
    #37857600
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
применить цикл к столбцу таблицы построчно
proof666Как к исходной таблице добавить столбец с новой рассчитанной датой
Столбцы в таблицу добавляются командой ALTER TABLE
А ваш цикл надо выкинуть и написать один запрос
...
Рейтинг: 0 / 0
28.06.2012, 09:09
    #37858225
proof666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
применить цикл к столбцу таблицы построчно
Критика это хорошо :)
И все же, как я понимаю нужно использовать курсор... но вот как это сделать не понимаю...
может есть другие способы?
...
Рейтинг: 0 / 0
28.06.2012, 09:26
    #37858245
iap
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
28.06.2012, 09:28
    #37858246
iap
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
29.06.2012, 10:19
    #37859799
proof666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
применить цикл к столбцу таблицы построчно
iap,

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

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


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