Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизДискретное значение сумм по месяцам. Найти похожие ветки
← →
-=Sergeante=- (2002-11-22 17:49) [0]Великикие Программеры, есть вопрос по SQL. Скажем, есть некая таблица (ID, ДАТА ОПЕРАЦИИ, СТОИМОСТЬ). Чтобы просумировать в определённом промежутке я делаю
BEETWEEN дата начала and дата конца
:)
Но вот незадача (не для Вас естесственно), как получить эн-ное кол-во записей, чтобы каждая была суммой за ОДИН месяц.
Т.е. я полагаю, что надо выполнять несколько запросов, и в каждам приращение на 1 месяц:
between "01.01.2001" and "01.02.2001"
и т.д.
between "01.02.2001" and "01.03.2001"
between "01.03.2001" and "01.04.2001"
Можно ли как нить это загнать в ХП, чтоб она мне всё красиво сделала?
Собственно, всё это нужно для анализа динамики продаж и построения графиков для наглядности.
Спасибо.
← →
3JIA9I CyKA (2002-11-22 18:31) [1]да
← →
-=Sergeante=- (2002-11-22 18:44) [2]Нет других вариантов, кроме как перебором в цикле? Может можно группировкой как-нибудь?
← →
MOA (2002-11-22 20:22) [3]Попробуйте завести таблицу с границами месяцев, затем JOIN с этой таблицей. Конечно, не стоит забывать о високосных годах.
Удачи!
← →
Johnmen (2002-11-23 01:17) [4]См. в сторону UNION и функции extract
← →
Alexandr (2002-11-23 08:07) [5]но если хочется быстро и не жалко несколько лишних байтов в базе данных, то создай поля в таблице число, месяц, год...
Заполняй их триггерами, а потом при селекте группировку по ним делай.
Летать будет.
← →
-=Sergeante=- (2002-11-23 14:57) [6]
> Alexandr © (23.11.02 08:07)
> но если хочется быстро и не жалко несколько лишних байтов
> в базе данных, то создай поля в таблице число, месяц, год...
> Заполняй их триггерами, а потом при селекте группировку
> по ним делай.
> Летать будет.
Это идея. А если сделать CALCULATED-поле на стороне сервера? Производительность упадёт сильно?
← →
sniknik (2002-11-23 15:20) [7]Почему нельзя сделать групировку по месяцам?
типа
SELECT SUM(Quantity),SUM(Sum),Min(CustomerID) FROM Invoices GROUP BY Month(OrderDate)
ну конечно и год надо включать.
и кстати если делать по
between "01.01.2001" and "01.02.2001"
between "01.02.2001" and "01.03.2001"
between "01.03.2001" and "01.04.2001" и т.д.
будет ошибка, between берет значения включительно. т.е. надо
between "01.01.2001" and "31.01.2001"
и т.д.
извиняюсь что влез (с IB не дружу :-), пример для MSSQL.
в IB так нельзя?
← →
BlackTiger (2002-11-23 15:31) [8]Я тут выкладывал как-то текст ХП для MSSQL (crosstab, pivot).
Может его можно адаптировать для IB.
Может в IB есть свои средства (SQL-команды) для "перевертышей", как у MSAccess?
← →
Alexandr (2002-11-26 08:09) [9]1) Calculated поле даст тормоза на селекте каждый раз, триггерное поле - на изменении один раз и с ним гемора больше. Смотри, что для тебя важнее.
2) Группировка по функциям еть далеко не но всех версиях (и в IB клонах только в Yaffil, по-моему), и уж индексы тут пролетают точно.
← →
-=Sergeante=- (2002-11-26 09:28) [10]
> Alexandr © (26.11.02 08:09)
> 1) Calculated поле даст тормоза на селекте каждый раз, триггерное
> поле - на изменении один раз и с ним гемора больше. Смотри,
> что для тебя важнее.
Думаю, сделаю как ты посоветовал, создам пару лишних полей и буду заполнять их триггером. Даже одно поле MMYYYY. И думаю с триггером гемора никакого не будет. Один раз написал, а остальное он сам всё сделает.
Спасибо всем за советы.
← →
Карелин Артем (2002-11-26 09:35) [11]Копай в сторону Extract(year,month и так далее.) это позволяет работать с датой внутри ХП.
А еще на сайте Ibase.ru есть материалы по работе с датой через UDF и хранимые процедуры для различных действий с датой.
← →
sniknik (2002-11-26 10:54) [12]-=Sergeante=- © (26.11.02 09:28)
>создам .. Даже одно поле MMYYYY
тогда уж YYYYMM, сортировка будет "правильной".
← →
-=Sergeante=- (2002-11-27 09:24) [13]
> Карелин Артем © (26.11.02 09:35)
> Копай в сторону Extract(year,month и так далее.)
Уже. Спасибо.
> sniknik © (26.11.02 10:54)
> тогда уж YYYYMM, сортировка будет "правильной".
Уже догнал :)
← →
-=Sergeante=- (2002-11-27 14:30) [14]Сдалал. Работает великолепно. Всем спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c