powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дни отпуска
25 сообщений из 156, страница 2 из 7
Дни отпуска
    #39448919
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтож раз с вызовом не получается, то как быть с изменением функцией? Вот он ищет отпуска по литре б. Даже если их 1-2-3 отпуска, не важно. Принцип такой же, так же переименовывает даты. Вызов стандартный, там даже менять нечего. Поэтому такой вопрос: если менять дату в функции, то как? Я пытался поставить +7, но он тогда ВСЕ даты прибавляет на семь, а надо последний интервал.
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
create or replace FUNCTION
 week_fun2(i_code IN INTEGER, i_year in integer)
RETURN VARCHAR2 IS
l_list VARCHAR2(32767);
 l_res VARCHAR2(4000);
 BEGIN SELECT listagg(column_name,',') WITHIN GROUP(ORDER BY to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd.mon'))
 INTO l_list
 FROM user_tab_columns
 WHERE TABLE_NAME = 'GRAFIK' AND column_name LIKE 'N%';
   l_list:='with t2 as(
  select God, Kod_sotr,'||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year)'||
  q'~
 select /* God, Kod_sotr, */ listagg(lag_WN) within group (order by RN,Kod_sotr) vacation
  from (
  select rownum RN, God, Kod_sotr,
  case when lead(Week_Number) over(PARTITION by God order by Kod_sotr) - Week_number > 1 then /*Weeks*/Weeks_D||';'
      when lead(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||';'
       when lag(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||','
       when Week_number - lag(Week_Number) over(PARTITION by God order by Kod_sotr) > 1 then  /*Weeks*/Weeks_D||','
       else null end lag_WN
          from (
                   select God, Kod_sotr, /*weeks*/
to_char(trunc(to_date(god,'yyyy'),'y')+(cast(ltrim(weeks,'N') as number)-1)*7,'dd mon') Weeks_D, 
                   Vacation, cast(ltrim(weeks,'N')as number) Week_Number from t2
                  unpivot (vacation for weeks in (~'||l_list||q'~))
                 order by God, Kod_sotr, cast(ltrim(weeks,'N')as number)
                )where vacation='о'
          )group by god, Kod_sotr~';
   EXECUTE IMMEDIATE l_list INTO l_res USING i_code,i_year;
  RETURN RTRIM(l_res);
  END;


SELECT t.god, u.FIO,  week_fun10(t.kod_sotr,t.god) as внеочередной FROM GRAFIK t, USERS u 
where t.KOD_SOTR = u.KOD_SOTR;



Как здесь быть, скажите пожалуйста?
...
Рейтинг: 0 / 0
Дни отпуска
    #39448922
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94j2k,

Да нет, всё правильно. И при этом он зачем то скобку требует.
Код: plsql
1.
2.
3.
SELECT t.god, u.FIO, (regexp_substr ( get_week_list3(t.kod_sotr,2017), '[^;]*;') ||' - '||
to_char(to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$')), 'dd.mon')+ interval '7' day,'dd.mon') as учебный_отпуск FROM GRAFIK t, USERS u 
where u.kod_sotr = 109909 and t.kod_sotr = u.KOD_SOTR and t.god = 2017;


ох, давайте по кускам:
1)
Код: plsql
1.
 ( 

- начало вашего столбца
2)
Код: plsql
1.
regexp_substr ( get_week_list3(t.kod_sotr,2017), '[^;]*;') 

- две открыли, две закрыли (т.е. тут у вас какая-то строка)
3)
Код: plsql
1.
||' - '|| 

- добавили еще строку
4)
Код: plsql
1.
to_char(to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$')), 'dd.mon')

- 4 открыли, 4 закрыли (получили СТРОКУ)
5)
Код: plsql
1.
+ interval '7' day 

к СТРОКЕ добавляете интервал
6)
Код: plsql
1.
,'dd.mon') 

- закрываете первую скобку с непонятным синтаксисом
Стало яснее?
...
Рейтинг: 0 / 0
Дни отпуска
    #39448925
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94j2k,

Да нет, всё правильно. И при этом он зачем то скобку требует.
Код: plsql
1.
2.
3.
SELECT t.god, u.FIO, (regexp_substr ( get_week_list3(t.kod_sotr,2017), '[^;]*;') ||' - '||
to_char(to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$')), 'dd.mon')+ interval '7' day,'dd.mon') as учебный_отпуск FROM GRAFIK t, USERS u 
where u.kod_sotr = 109909 and t.kod_sotr = u.KOD_SOTR and t.god = 2017;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  1  SELECT t.god, (regexp_substr ( get_week_list3(t.kod_sotr,t.god), '[^;]*;') ||
  2  to_char((to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$'),'DD.MON";"')+7),'dd.mon";"')) as f
  3* FROM GRAFIK t
SQL> /

       GOD F
---------- ----------------------------------------
      2017 01 січ;19.лют;
      2017 08 січ;19.лют;
      2017 15 січ;19.лют;


ps
добавить least

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448926
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,

нет под рукой базы - пишу на форуме
попробуй так:
Код: plsql
1.
2.
3.
SELECT t.god, u.FIO, regexp_substr ( get_week_list3(t.kod_sotr,2017), '[^;]*;') ||' - '||
to_char(to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$'), 'dd.mon')+ interval '7' day,'dd.mon') as учебный_отпуск FROM GRAFIK t, USERS u 
where u.kod_sotr = 109909 and t.kod_sotr = u.KOD_SOTR and t.god = 2017;
...
Рейтинг: 0 / 0
Дни отпуска
    #39448928
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,

Без толку. Теперь он пишет

date format picture ends before converting entire input string
...
Рейтинг: 0 / 0
Дни отпуска
    #39448931
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Код: sql
1.
2.
3.
SELECT t.god, u.FIO, regexp_substr ( get_week_list3(t.kod_sotr,2017), '[^;]*;') ||' - '||
to_char((to_date(regexp_substr ( get_week_list3(t.kod_sotr,t.god), ' [^;]*;$'),'DD MON";"')+6),'dd mon";"') as учебный_отпуск FROM GRAFIK t, USERS u 
where u.kod_sotr = 109909 and t.kod_sotr = u.KOD_SOTR and t.god = 2017;


Во, спасибо Вам. И вам MaximaXXL

Теперь же мне как то нужно совместить это с той функцией, что я бросил выше. Куда здесь это можно подставить?
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
create or replace FUNCTION
 week_fun2(i_code IN INTEGER, i_year in integer)
RETURN VARCHAR2 IS
l_list VARCHAR2(32767);
 l_res VARCHAR2(4000);
 BEGIN SELECT listagg(column_name,',') WITHIN GROUP(ORDER BY to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd.mon'))
 INTO l_list
 FROM user_tab_columns
 WHERE TABLE_NAME = 'GRAFIK' AND column_name LIKE 'N%';
   l_list:='with t2 as(
  select God, Kod_sotr,'||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year)'||
  q'~
 select /* God, Kod_sotr, */ listagg(lag_WN) within group (order by RN,Kod_sotr) vacation
  from (
  select rownum RN, God, Kod_sotr,
  case when lead(Week_Number) over(PARTITION by God order by Kod_sotr) - Week_number > 1 then /*Weeks*/Weeks_D||';'
      when lead(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||';'
       when lag(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||','
       when Week_number - lag(Week_Number) over(PARTITION by God order by Kod_sotr) > 1 then  /*Weeks*/Weeks_D||','
       else null end lag_WN
          from (
                   select God, Kod_sotr, /*weeks*/
to_char(trunc(to_date(god,'yyyy'),'y')+(cast(ltrim(weeks,'N') as number)-1)*7,'dd mon') Weeks_D, 
                   Vacation, cast(ltrim(weeks,'N')as number) Week_Number from t2
                  unpivot (vacation for weeks in (~'||l_list||q'~))
                 order by God, Kod_sotr, cast(ltrim(weeks,'N')as number)
                )where vacation='о'
          )group by god, Kod_sotr~';
   EXECUTE IMMEDIATE l_list INTO l_res USING i_code,i_year;
  RETURN RTRIM(l_res);
  END;


SELECT t.god, u.FIO,  week_fun10(t.kod_sotr,t.god) as внеочередной FROM GRAFIK t, USERS u 
where t.KOD_SOTR = u.KOD_SOTR;
...
Рейтинг: 0 / 0
Дни отпуска
    #39448933
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,

я ж Вам кинул "работающий" вариант


.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448937
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94stax..,

[src sql]
Во, спасибо Вам. И вам MaximaXXL

Теперь же мне как то нужно совместить это с той функцией, что я бросил выше. Куда здесь это можно подставить?

імхо
проще переписать ф-цию, выбросив динамику

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448939
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

ну тот работающий вариант работает для вызова тех одиночных интервалов. А вызов у другой функции, который ловит интервалы, там не привяжешь. Или я что то упускаю?
...
Рейтинг: 0 / 0
Дни отпуска
    #39448942
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94stax..,

ну тот работающий вариант работает для вызова тех одиночных интервалов. А вызов у другой функции, который ловит интервалы, там не привяжешь. Или я что то упускаю?
упускаете
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
  1* SELECT t.god, kod_sotr,  week_fun2(t.kod_sotr,t.god) as f FROM GRAFIK t
SQL> /

       GOD   KOD_SOTR F
---------- ---------- ----------------------------------------
      2017        222 15 січ,22 січ;05 лют;19 лют;05 бер;
      2017        202 15 січ,22 січ;05 лют;19 лют;05 бер;
      2017        111 01 січ;26 лют;



гляньте если интервал одна неделя, что менять будете?

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448943
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Norman94,

SELECT t.god, u.FIO, to_char((to_date(regexp_substr (week_fun2(t.kod_sotr,t.god)),'DD MON";"')+6),'dd mon";"') as внеочередной FROM GRAFIK t, USERS u
where t.KOD_SOTR = 109909 and t.kod_sotr = u.KOD_SOTR;

То бишь так пишет, что нет аргументов. Значит надо что то менять в функции, но не могу додуматься, что именно. Подскажите пожалуйста!
...
Рейтинг: 0 / 0
Дни отпуска
    #39448946
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Ну если одна неделя, то он пишет, что нехватает чисел. Здорово.

И что тут теперь писать?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or replace FUNCTION get_week_list3(i_code IN INTEGER, i_year in integer) RETURN VARCHAR2 IS
  l_list  VARCHAR2(32767);
  l_res   VARCHAR2(4000);
BEGIN
SELECT listagg('CASE WHEN '||column_name||' IN(''у'') THEN '||''''|| to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd mon')||''''|| '||''; '' ELSE NULL END ' ,'||') 
WITHIN GROUP(ORDER BY 1)
  INTO  l_list
  FROM  user_tab_columns
  WHERE TABLE_NAME = 'GRAFIK' 
  AND column_name LIKE 'N%';
EXECUTE IMMEDIATE 'SELECT '||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year' INTO l_res USING i_code,i_year;
RETURN RTRIM(l_res);
END;




Тут надо строку
Код: sql
1.
2.
SELECT listagg('CASE WHEN '||column_name||' IN(''у'') THEN '||''''|| to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd mon')||''''|| '||''; '' ELSE NULL END ' ,'||') 


менять?
...
Рейтинг: 0 / 0
Дни отпуска
    #39448948
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94stax..,
Тут надо строку менять?

нет потому что поменяет всем, у Вас нет признака конца непрыревного интервала

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448951
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

А что же тогда делать? В вызове копаться?
...
Рейтинг: 0 / 0
Дни отпуска
    #39448952
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

ой
непрыревного = неперервного

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448958
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94,

перепИсать

.....
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39448961
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Подскажите пожалуйста, что конкретно надо переписать здесь?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or replace FUNCTION get_week_list3(i_code IN INTEGER, i_year in integer) RETURN VARCHAR2 IS
  l_list  VARCHAR2(32767);
  l_res   VARCHAR2(4000);
BEGIN
SELECT listagg('CASE WHEN '||column_name||' IN(''у'') THEN '||''''|| to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd mon')||''''|| '||''; '' ELSE NULL END ' ,'||') 
WITHIN GROUP(ORDER BY 1)
  INTO  l_list
  FROM  user_tab_columns
  WHERE TABLE_NAME = 'GRAFIK' 
  AND column_name LIKE 'N%';
EXECUTE IMMEDIATE 'SELECT '||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year' INTO l_res USING i_code,i_year;
RETURN RTRIM(l_res);
END;
...
Рейтинг: 0 / 0
Дни отпуска
    #39448979
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лдано, шут с той функцией. Мне нужно разобраться с этой, здесь он ищет интервалы и выводит первую и последнюю неделю отпуска. А надо чтобы выводило начало отпуска (1 число недели) и конец (воскресенье последней недели). Но как бы я не пытался, он у меня либо всё преобразует в воскресенье, либо ничего. Помогите разобраться, что здесь надо поменять?
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
create or replace FUNCTION
 week_fun10(i_code IN INTEGER, i_year in integer)
RETURN VARCHAR2 IS
l_list VARCHAR2(32767);
 l_res VARCHAR2(4000);
 BEGIN SELECT listagg(column_name,',') WITHIN GROUP(ORDER BY to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd.mon'))
 INTO l_list
 FROM user_tab_columns
 WHERE TABLE_NAME = 'GRAFIK' AND column_name LIKE 'N%';
   l_list:='with t2 as(
  select God, Kod_sotr,'||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year)'||
  q'~
 select /* God, Kod_sotr, */ listagg(lag_WN) within group (order by RN,Kod_sotr) vacation
  from (
  select rownum RN, God, Kod_sotr,
  case when lead(Week_Number) over(PARTITION by God order by Kod_sotr) - Week_number > 1 then /*Weeks*/Weeks_D||';'
      when lead(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||';'
       when lag(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||','
       when Week_number - lag(Week_Number) over(PARTITION by God order by Kod_sotr) > 1 then  /*Weeks*/Weeks_D||','
       else null end lag_WN
          from (
                   select God, Kod_sotr, /*weeks*/
to_char(trunc(to_date(god,'yyyy'),'y')+(cast(ltrim(weeks,'N') as number)-1)*7,'dd mon') Weeks_D, 
                   Vacation, cast(ltrim(weeks,'N')as number) Week_Number from t2
                  unpivot (vacation for weeks in (~'||l_list||q'~))
                 order by God, Kod_sotr, cast(ltrim(weeks,'N')as number)
                )where vacation='б'
          )group by god, Kod_sotr~';
   EXECUTE IMMEDIATE l_list INTO l_res USING i_code,i_year;
  RETURN RTRIM(l_res);
  END;
...
Рейтинг: 0 / 0
Дни отпуска
    #39448995
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Norman94,

Забыл сказать важную вещь. В таблице у меня под неделями стоят буквы, обозначающие недели, по которым функция вытаскивает недели, и, заодно преобразует названия столбцов N(любое число) в соответствующее число месяца. То есть получается, что у меня отпуск выходит с 15 мая по 29 мая. Но 29 мая это последняя неделя, а значит нужно не 29 мая, а 4 июня. Подскажите как это реализовать в функции выше?
...
Рейтинг: 0 / 0
Дни отпуска
    #39449089
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Простите, у вас есть какие нибудь идеи?
...
Рейтинг: 0 / 0
Дни отпуска
    #39449116
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94То есть получается, что у меня отпуск выходит с 15 мая по 29 мая.
скорей бы уже
...
Рейтинг: 0 / 0
Дни отпуска
    #39449120
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94stax..,

Простите, у вас есть какие нибудь идеи?
переписать (без EXECUTE IMMEDIATE)

pl/sql, так как нюансов у Вас повылазит много
напр в Украине 8.9 выходные, 13-го рабочій
у Вас когда неделя начнется/закончится?


.......
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39449128
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..Norman94stax..,

Простите, у вас есть какие нибудь идеи?
переписать (без EXECUTE IMMEDIATE)

pl/sql, так как нюансов у Вас повылазит много
напр в Украине 8.9 выходные, 13-го рабочій
у Вас когда неделя начнется/закончится?

А как отсюда EXECUTE IMMEDIATE убрать?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
create or replace FUNCTION
 week_fun10(i_code IN INTEGER, i_year in integer)
RETURN VARCHAR2 IS
l_list VARCHAR2(32767);
 l_res VARCHAR2(4000);
 BEGIN SELECT listagg(column_name,',') WITHIN GROUP(ORDER BY to_char( trunc (to_date(i_year||'0101', 'yyyymmdd') 
+ ((LTRIM(column_name,'N'))-1)*7, 'ww'), 'dd.mon'))
 INTO l_list
 FROM user_tab_columns
 WHERE TABLE_NAME = 'GRAFIK' AND column_name LIKE 'N%';
   l_list:='with t2 as(
  select God, Kod_sotr,'||l_list||' FROM GRAFIK WHERE kod_sotr=:A AND god=:year)'||
  q'~
 select /* God, Kod_sotr, */ listagg(lag_WN) within group (order by RN,Kod_sotr) vacation
  from (
  select rownum RN, God, Kod_sotr,
  case when lead(Week_Number) over(PARTITION by God order by Kod_sotr) - Week_number > 1 then /*Weeks*/Weeks_D||';'
      when lead(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||';'
       when lag(Week_Number) over(PARTITION by God order by Kod_sotr) is null then            /*Weeks*/Weeks_D||','
       when Week_number - lag(Week_Number) over(PARTITION by God order by Kod_sotr) > 1 then  /*Weeks*/Weeks_D||','
       else null end lag_WN
          from (
                   select God, Kod_sotr, /*weeks*/
to_char(trunc(to_date(god,'yyyy'),'y')+(cast(ltrim(weeks,'N') as number)-1)*7,'dd mon') Weeks_D, 
                   Vacation, cast(ltrim(weeks,'N')as number) Week_Number from t2
                  unpivot (vacation for weeks in (~'||l_list||q'~))
                 order by God, Kod_sotr, cast(ltrim(weeks,'N')as number)
                )where vacation='б'
          )group by god, Kod_sotr~';
   EXECUTE IMMEDIATE l_list INTO l_res USING i_code,i_year;
  RETURN RTRIM(l_res);
  END;



Ну мы выходные в рассчёт не берем, так что понедельник начинается с 15 числа, а заканчивается 21. То же самое с отпуском, то есть начало - это первое число недели, последнее - конец. Я даже ума не приложу как это реализовать.

.......
stax
...
Рейтинг: 0 / 0
Дни отпуска
    #39449129
Norman94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

Тьфу то есть

Ну мы выходные в рассчёт не берем, так что понедельник начинается с 15 числа, а заканчивается 21. То же самое с отпуском, то есть начало - это первое число недели, последнее - конец. Я даже ума не приложу как это реализовать.
...
Рейтинг: 0 / 0
Дни отпуска
    #39449151
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Norman94так что понедельник начинается с 15 числа, а заканчивается 21.
Код: plsql
1.
2.
3.
4.
5.
select level week
      ,trunc(trunc(sysdate, 'yyyy'), 'iw') + level * 7 rus_mon
      ,trunc(sysdate, 'yyyy') + level * 7 rus_sun
from   dual
connect by level < 53
...
Рейтинг: 0 / 0
25 сообщений из 156, страница 2 из 7
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дни отпуска
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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