Valera Tchepickov пишет:
Hello, All!

Имеется, например, таблица типа:

ID   AMOUNT  DATA
1          20.00      5.01.2006
..           ....            .......

Необходимо сформировать выборку за произвольный период, например
с 5.01.06 по 18.05.06 , сгруппированную по неделям в следующем виде:

begin_week        end_week         amount

5.01.06               8.01.06              40.00
9.01.06              15.01.06            100.00
  ....                        .....                   .....
15.05.06             18.05.06           60.00

т.е первая и последняя недели могут быть неполными.

можно ли сделать это запросом без процедуры?

Можно. Но наверное не нужно. Под ФБ2 это извращение выглядит как-то так:

Select
 case
  WHEN (DATA-extract(weekday from DATA)+1>=:BEG) THEN
   DATA-extract(weekday from DATA)+1
 else
   :BEG
 end
,
 case
  WHEN (DATA+5-extract(weekday from DATA)<=:END) THEN
   DATA+5-extract(weekday from DATA)
 else
   :END
 end,
 SUM(AMOUNT)
from new_table
where DATA between :BEG and :END
group by 1,2





Ответить