![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка данных за каждый месяци сумирование [D5, IB5.x]
Denis_Visma © (2004-04-09 14:48:00)Уважаемые! Как написать запрос, котороый бы покаждому дню месяца сумировал одно поле....если например за какой то день нее записей, то все равно он отображался в выборке спасибо...
select STAT_DAY, // поле по которому надо сделать ограничение на дату
SUM(SELF_MARK)
from statday
roottim (2004-04-09 17:09:00) [1]я конечно наверно лох по синтаксису ИБ, да и в оракле только в 9-ке появилис pipeline функции... но накидать примерно код могу.. только не сильно бейте
create pocedure days_of_month(p_month integer, p_year integer)-- вот это на pl
return (dmonth date)
as
begin
for i in 1..lastday(to_date(p_month||'.'||p_year, 'mm.yyyy'))
loop
dmonth := to_date(i||'.'||p_month||'.'||p_year, 'dd.mm.yyyy');
-- а это на isql
suspend;
-- и это на pl
end loop;
end
звиняйте , но что смог вспомнить...
а затем соединям
select ... from ttt, days_of_month where dmonth = ttt.dayofmonth
Nikolay M. (2004-04-09 16:05:00) [2]
> Johnmen © (09.04.04 15:58) [8]
Ну, я же и не претендую. Я с ИБ совсем немного работал и то давно. Главное: ход мысли передать :)
В MySQL, где формат даты-времени был, в основном "2004-09-04 16:04:00" помогал банальный кастинг в строку и Trim правых символов:
GROUP BY left(date_time, 10)
Johnmen (2004-04-09 15:58:00) [3]Не, ребята, с IB5 много не наработаешь...:)
>Nikolay M. © (09.04.04 15:32) [7]
А так можно наработать разве что с FB1.5
:)
Nikolay M. (2004-04-09 15:32:00) [4]
> Соловьев © (09.04.04 15:05) [4]
> Только я как понял у автора поста - день храниться.
А, дошло. У него дата-время, а нужна группировка только по дате?
Немного доработаем:
SELECT sum(1), Extract(year from date_field) || Extract(month from date_field) || Extract(day from date_field)
FROM table_name
GROUP BY Extract(year from date_field) || Extract(month from date_field) || Extract(day from date_field)
Или вместо этого нагромождения Extract-ов сделать CAST(date_field AS date). Правда, не знаю, какой эффект будет иметь в ИБ, может есть более прямые функции для даты-времени.
Соловьев (2004-04-09 15:11:00) [5]
> Denis_Visma (09.04.04 15:06) [5]
> вы не могли бы написать эту самую ХП? буду очень благодарен
скоко у.е.? :)
Если серьезно, то ты же программист - пора и научится. Используй IBExpert(www.ibexpert.com - для нашего брата бесплатен) Там удобно писать ХП.
Denis_Visma (2004-04-09 15:06:00) [6]вы не могли бы написать эту самую ХП? буду очень благодарен
Соловьев (2004-04-09 15:05:00) [7]
> Nikolay M. © (09.04.04 15:01) [3]
> В ИБ есть функции, извлекающие год и месяц?
есть extract(year from field )
extract(month from field )
extract(day from field )
Только я как понял у автора поста - день храниться.
Nikolay M. (2004-04-09 15:01:00) [8]В ИБ есть функции, извлекающие год и месяц?
Подозреваю, что есть. Попробуй что-то вроде
SELECT sum(1), ExtractYear(date_field) || ExtractMonth(date_field)
FROM table_name
GROUP BY ExtractYear(date_field) || ExtractMonth(date_field)
?
Соловьев (2004-04-09 15:00:00) [9]
> покаждому дню месяца сумировал одно поле....
select SUM(SELF_MARK)
from statday
where stat_day=your_day
Карелин Артем (2004-04-09 14:54:00) [10]Пиши хранимую процедуру, в ней цикл по перечислению месяцев. Внутри цикла делай SUM(SELF_MARK) и все.