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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @str varchar(Max), @idrr int, @idsr int = 131775838 
set @idrr=(select idPaymentRegistry from ftPaymentRegistry where idSimpleRequest=@idsr)
set @str=(select substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) from bfPaymentRegistryDetails where idPaymentRegistry=@idrr)
select
pr.idSimpleRequest AS 'ИД письма',
convert(date,pr.dExecDate,104) AS 'Дата создания',
@str AS 'Срок акцепта',
dateadd(day, 1, convert(date,pr.dExecDate,104)) AS 'Дата промежуточного отчета',
dateadd(day, @str+1, convert(date,pr.dExecDate,104)) AS 'Дата итогового отчета'
from ftPaymentRegistry pr
inner join bfPaymentRegistryDetails pd on pd.idPaymentRegistry=pr.idPaymentRegistry
where pr.idSimpleRequest=@idsr
GROUP BY pr.idSimpleRequest, pr.dExecDate, pd.xmlExecRequest



Поясню: есть таблица ftPaymentRegistry (в этой таблице только одна строка) по id 131775838 (ид пишем вручную) соединяю с таблицей bfPaymentRegistryDetails (в которой уже может быть много строк) и все эти строки надо перебрать и записать с учетом действий над ними

Помогите, если не сложно

Модератор: Используйте тег SRC
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40116864
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
pr.idSimpleRequest AS 'ИД письма',
convert(date,pr.dExecDate,104) AS 'Дата создания',
/*@str*/ substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) AS 'Срок акцепта',
dateadd(day, 1, convert(date,pr.dExecDate,104)) AS 'Дата промежуточного отчета',
dateadd(day, /*@str*/
	cast(isnull(substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1),'0') as int)+1
		, convert(date,pr.dExecDate,104)) AS 'Дата итогового отчета'
from ftPaymentRegistry pr
inner join bfPaymentRegistryDetails pd on pd.idPaymentRegistry=pr.idPaymentRegistry
--where pr.idSimpleRequest=@idsr
GROUP BY pr.idSimpleRequest, pr.dExecDate, pd.xmlExecRequest

.
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40116906
ejikv2mane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,
Спасибо за ваше решение! Даже циклы не понадобились!
пытаюсь теперь не просто прибавлять кол-во дней, а без учета выходных, т.е только рабочие

т.е функция substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) AS 'Срок акцепта', выдает кол-во дней, которые надо прибавить к дате создания

Пытаюсь заменить (substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) из Даты итогового отчета на

(substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1),convert(date,pr.dEqDocCreated,104)) +
Cast(((
CASE WHEN 5 <= DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7
THEN 5
ELSE
DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7
END)
-1 + substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) )/5
as int)
* 2 -
(Case when DAtepart(weekday, convert(date,pr.dEqDocCreated,104))=6 then 1 else 0 end)


но что-то не идет
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40116914
ejikv2mane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,
godsql,
Спасибо за ваше решение! Даже циклы не понадобились!
пытаюсь теперь не просто прибавлять кол-во дней, а без учета выходных, т.е только рабочие

т.е функция substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) AS 'Срок акцепта', выдает кол-во дней, которые надо прибавить к дате создания

Пытаюсь заменить (substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) из Даты итогового отчета на

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
(substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1),convert(date,pr.dEqDocCreated,104)) +
Cast(((
CASE WHEN 5 <= DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7
THEN 5
ELSE
DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7
END)
-1 + substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) )/5
as int)
* 2 -
(Case when DAtepart(weekday, convert(date,pr.dEqDocCreated,104))=6 then 1 else 0 end)



но что-то не идет
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40116921
ejikv2mane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql, свою старую задачу переделала на добавление с рабочими днями, но без переменных не получается

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @DaysToAdd int, @idrr int, @idsr int = 131775838, @FromDate datetime
set @idrr=(select idPaymentRegistry from ftPaymentRegistry where idSimpleRequest=@idsr)
se@DaysToAdd=(select substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) from bfPaymentRegistryDetails where idPaymentRegistry=@idrr)
set @FromDate=convert(date,(select dExecDate from bfPaymentRegistryDetails where idPaymentRegistry=@idrr),104) 
select
pr.idSimpleRequest AS 'ИД письма',
@FromDate AS 'Дата создания',
@DaysToAdd AS 'Срок акцепта',
dateadd(day, 1, convert(date,pr.dExecDate,104)) AS 'Дата промежуточного отчета',
Dateadd(DAY,@DaysToAdd,@FromDate) +
Cast(((
         CASE WHEN 5 <= DATEPART(weekday, @FromDate)%7 
        THEN 5
         ELSE 
         DATEPART(weekday, @FromDate)%7
         END)
      -1 + @DaysToAdd )/5 
 as int) 
* 2 - 
   (Case when DAtepart(weekday, @FromDate)=6 then 1 else 0 end)  AS 'Дата итогового отчета'
from ftPaymentRegistry pr
inner join bfPaymentRegistryDetails pd on pd.idPaymentRegistry=pr.idPaymentRegistry
where pr.idSimpleRequest=@idsr
GROUP BY pr.idSimpleRequest, pr.dExecDate, pd.xmlExecRequestt 
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40116926
ejikv2mane
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ejikv2mane, вроде немного получилось но напутано с датами и числами. ругается Operand type clash: date is incompatible with int

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
select
pr.idSimpleRequest AS 'ИД письма',
pd.SReferenceABS AS 'ИД ПД',
convert(date,pr.dEqDocCreated,104) AS 'Дата создания',
substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1) AS 'Срок акцепта',
dateadd(day, 1, convert(date,pr.dEqDocCreated,104)) AS 'Дата промежуточного отчета',
Dateadd(DAY,cast(isnull(substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1),'0') as int),convert(date,pr.dEqDocCreated,104) ) +
Cast(((
         CASE WHEN 5 <= DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7 
        THEN 5
         ELSE 
         DATEPART(weekday, convert(date,pr.dEqDocCreated,104))%7
         END)
      -1 + (cast(isnull(substring(xmlExecRequest,charindex('r207":"',xmlExecRequest)+7, 1),'0') as int)) )/5 
 as int) 
* 2 - 
   (Case when DAtepart(weekday, convert(date,pr.dEqDocCreated,104))=6 then 1 else 0 end) AS 'Дата итогового отчета'

from ftPaymentRegistry pr
inner join bfPaymentRegistryDetails pd on pd.idPaymentRegistry=pr.idPaymentRegistry
where pr.idSimpleRequest=245195624
 
GROUP BY pr.idSimpleRequest, pr.dEqDocCreated, pd.xmlExecRequest, pd.SReferenceABS
...
Рейтинг: 0 / 0
Помогите с циклом в скрипте
    #40119980
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ejikv2mane
Пи все эти строки надо перебрать и записать с учетом действий над ними



Если для выполнения данной задачи вы употребляете слово "цикл", то вы не понимаете что такое реляционная база данных и как с ней работать.

начните с этого.

https://sql-language.ru/sqlbooks/sql-zaprosy-dlya-prostyx-smertnyx.pdf

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


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