äÏÂÒÏÇÏ ×ÒÅÍÅÎÉ ÓÕÔÏË
Firebird 2.0
ÅÓÔØ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ:
create view STF$TODAY_BORDERS (
ID_I,
DURATION,
TODAY_BEGIN,
TODAY_END )
as
select
i.ID,
iv.REAL_DURATION,
cast((ii.START_POINT +
(select coalesce(sum(iv1.REAL_DURATION),0)
from SFT$INTERVALS_VIEW iv1
where iv1.ID_INT = ii.ID_INT
and iv1.ORDER_NUMBER < iv.ORDER_NUMBER) -
(select coalesce(sum(iv1.REAL_DURATION),0)
from SFT$INTERVALS_VIEW iv1
where iv1.ID_INT = ii.ID_INT
and iv1.ORDER_NUMBER < ii.FIRST_INT)) / 60e0 / 24e0 +
cast(current_date as timestamp) as timestamp),
cast((ii.START_POINT +
(select coalesce(sum(iv1.REAL_DURATION),0)
from SFT$INTERVALS_VIEW iv1
where iv1.ID_INT = ii.ID_INT
and iv1.ORDER_NUMBER < iv.ORDER_NUMBER) -
(select coalesce(sum(iv1.REAL_DURATION),0)
from SFT$INTERVALS_VIEW iv1
where iv1.ID_INT = ii.ID_INT
and iv1.ORDER_NUMBER < ii.FIRST_INT)) / 60e0 / 24e0 +
cast(current_date as timestamp) as timestamp) + iv.REAL_DURATION / 60e0 /
24e0
from SFT$ITEMS_VIEW i
join SFT$ITEM_INTERVALS_VIEW ii on ii.ID_I = i.ID
and (ii.DATE_IN = (select first 1
ii1.DATE_IN
from
SFT$ITEM_INTERVALS_VIEW ii1
where ii1.DATE_IN <=
current_timestamp
and ii1.ID_I = i.ID
and ii1.ID_PD = 0
order by ii1.DATE_IN
desc))
and ii.ID_PD = 0
join SFT$INTERVALS_VIEW iv on iv.ID_INT = ii.ID_INT
order by i.ID, iv.ORDER_NUMBER
ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÐÏÌÑ TODAY_BEGIN É TODAY_END ÐÒÉÈÏÄÉÔÓÑ ×ÙÐÏÌÎÑÔØ ÏÄÉÎ É ÔÏÔ
ÖÅ ÚÁÐÒÏÓ Ä×Á ÒÁÚÁ
Á ÈÏÔÅÌÏÓØ ÂÙ ÔÁË:
create view STF$TODAY_BORDERS (
ID_I,
DURATION,
TODAY_BEGIN,
TODAY_END comuted by TODAY_BEGIN + DURATION ) ...
ëÁË ×ÁÒÉÁÎÔ ×ÉÖÕ ÓÄÅÌÁÔØ ÅÝÅ ÏÄÎÕ ×ØÀÈÕ, ÎÁ ÏÓÎÏ×Å ÜÔÏÊ × ËÏÔÏÒÏÊ É ÓÄÅÌÁÔØ
ÓÌÏÖÅÎÉÅ