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

Откуда:
Сообщений: 2
Есть таблица Т(d1,....,d31,sum_worktime). (табель)

d1,....,d31 содержит время работы
sum_worktime - сумма d1...d31

Для содержания времени (ЧЧ:ММ) в d1,....,d31 использую тип char, так как есть выходние ('В'), больн('Б') и т.д. Как сделать сумму общего времени
sum_worktime?



create or replace type mas as
varray (31) of char(6)
,
,
,
fetch c1 into pib1,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,
d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31;

IF c1%FOUND THEN

m:=mas(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,
d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31);
for i in 1..31 loop
if m(i)='В' then vyh:=vyh+1; end if; /*кол. выходных
.
.
.
if m(i)<>'В' and m(i)<>'Б' then
rob:=rob+1;/*кол роб.

sum_worktime:=sum_worktime+????

end if;
end loop;


else exit;

end if;

Думаю что похожие вопросы уже были, но уже 2 часа не могу найти. Помогите пожалуйста чайнику
7 окт 06, 03:13    [3232700]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить задачку  [new]
b23
Member

Откуда: Минск
Сообщений: 105

update T A
set sum_worktime
=(
SELECT x.HOUR + FLOOR (x.MINUTE / 60) ||':'|| MOD (x.MINUTE, 60)
FROM (SELECT TO_NUMBER
(TO_CHAR (TO_DATE (CASE
WHEN d1 = 'B' OR d1 = 'Б'
THEN '00:00'
ELSE d1
END,'hh24:mi' ),
'hh24')
)
+ ........+
TO_NUMBER
(TO_CHAR (TO_DATE (CASE
WHEN d31 = 'B' OR d31 = 'Б'
THEN '00:00'
ELSE d1
END,'hh24:mi' ),
'hh24')
) AS HOUR,
TO_NUMBER
(TO_CHAR (TO_DATE (CASE
WHEN d1 = 'B' OR d1 = 'Б'
THEN '00:00'
ELSE d1
END,'hh24:mi' ),
'hh24')
)
+ ........+
TO_NUMBER
(TO_CHAR (TO_DATE (CASE
WHEN d31 = 'B' OR d31 = 'Б'
THEN '00:00'
ELSE d1
END,'hh24:mi' ),
'hh24')
) AS MINUTE
FROM T Z
WHERE a.d1=z.d1 AND ... a.d31=z.d31
) x )
7 окт 06, 15:24    [3233097]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить