> úÄÒÁÓÔ×ÕÊÔÅ.
>
> ôÁËÁÑ ÐÒÏÂÌÅÍËÁ
>
> åÓÔØ ÔÁÂÌÉÃÁ Ó ÔÁËÉÍÉ ÄÁÎÎÙÍÉ:
>
> äÁÔÁ (DateTime)
> ðÏËÁÚÁÔÅÌØ (Integer)
> úÎÁÞÅÎÉÅ ÐÏËÁÚÁÔÅÌÑ (Float)
>
> ÷ ÜÔÏÊ ÔÁÂÌÉÃÅ ÎÅ ÄÌÑ ×ÓÅÈ ÄÁÔ ËÁÌÅÎÄÁÒÑ ÅÓÔØ ÚÁÐÉÓÉ
>
> îÕÖÎÏ ÐÏÌÕÞÉÔØ × SQL ÚÁÐÒÏÓÅ ×ÓÅ ÄÁÔÙ ÚÁÐÒÁÛÉ×ÁÅÍÏÇÏ ÐÅÒÉÏÄÁ ÅÓÌÉ (× 
> ÔÁÂÌÉÃÅ ÏÔÓÕÔÓÔ×ÕÅÔ ÚÎÁÞÅÎÉÅ, ÔÏ ×Ù×ÅÓÔÉ 0).
> íÙÓÌÉ ËÒÕÔÑÔÓÑ ×ÏËÒÕÇ ÐÒÏÃÅÄÕÒÙ, ÎÏ ÞÔÏ ÔÏ ËÒÁÓÉ×ÏÇÏ ÒÅÛÅÎÉÑ ÎÅ 
> ÐÏÌÕÞÁÅÔÓÑ.

ÍÏÖÎÏ ÔÁË

ÚÁËÌÁÄÙ×ÁÅÍÓÑ ÎÁ ÍÁËÓÉÍÁÌØÎÕÀ ÒÁÚÎÉÃÕ ÍÅÖÄÕ ÐÅÒ×ÙÍ É ÐÏÓÌÅÄÎÉÍ ÄÎÅÍ × 10000 
ÄÎÅÊ

create table MY_TABLE(
ADATE date,
AFLOAT float,
unique (ADATE));

select
  (r1.RDB$RELATION_ID + r2.RDB$RELATION_ID * 10 + r3.RDB$RELATION_ID * 100 + 
r4.RDB$RELATION_ID * 1000) + (select min(ADATE) from MY_TABLE),
  coalesce((select AFLOAT from MY_TABLE where ADATE = (r1.RDB$RELATION_ID + 
r2.RDB$RELATION_ID * 10 + r3.RDB$RELATION_ID * 100 + r4.RDB$RELATION_ID * 
1000) + (select min(ADATE) from MY_TABLE)),0)
from RDB$DATABASE
join RDB$RELATIONS r1 on r1.RDB$RELATION_ID < 10
join RDB$RELATIONS r2 on r2.RDB$RELATION_ID < 10
join RDB$RELATIONS r3 on r3.RDB$RELATION_ID < 10
join RDB$RELATIONS r4 on r4.RDB$RELATION_ID < 10
where (r1.RDB$RELATION_ID + r2.RDB$RELATION_ID * 10 + r3.RDB$RELATION_ID * 
100 + r4.RDB$RELATION_ID * 1000) between 0 and (select max(ADATE) - 
min(ADATE) from MY_TABLE)
order by 1





Ответить