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