äÏÂÒÏÇÏ ×ÒÅÍÅÎÉ ÓÕÔÏË

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 ) ...

ëÁË ×ÁÒÉÁÎÔ ×ÉÖÕ ÓÄÅÌÁÔØ ÅÝÅ ÏÄÎÕ ×ØÀÈÕ, ÎÁ ÏÓÎÏ×Å ÜÔÏÊ × ËÏÔÏÒÏÊ É ÓÄÅÌÁÔØ 
ÓÌÏÖÅÎÉÅ 



Ответить