![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дискретное значение сумм по месяцам. [D5, IB6.x]
-=Sergeante=- © (2002-11-22 17:49:00)Великикие Программеры, есть вопрос по 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"
Можно ли как нить это загнать в ХП, чтоб она мне всё красиво сделала?
Собственно, всё это нужно для анализа динамики продаж и построения графиков для наглядности.
Спасибо.
-=Sergeante=- (2002-11-27 14:30:00) [1]Сдалал. Работает великолепно. Всем спасибо.
-=Sergeante=- (2002-11-27 09:24:00) [2]
> Карелин Артем © (26.11.02 09:35)
> Копай в сторону Extract(year,month и так далее.)
Уже. Спасибо.
> sniknik © (26.11.02 10:54)
> тогда уж YYYYMM, сортировка будет "правильной".
Уже догнал :)
sniknik (2002-11-26 10:54:00) [3]-=Sergeante=- © (26.11.02 09:28)
>создам .. Даже одно поле MMYYYY
тогда уж YYYYMM, сортировка будет "правильной".
Карелин Артем (2002-11-26 09:35:00) [4]Копай в сторону Extract(year,month и так далее.) это позволяет работать с датой внутри ХП.
А еще на сайте Ibase.ru есть материалы по работе с датой через UDF и хранимые процедуры для различных действий с датой.
-=Sergeante=- (2002-11-26 09:28:00) [5]
> Alexandr © (26.11.02 08:09)
> 1) Calculated поле даст тормоза на селекте каждый раз, триггерное
> поле - на изменении один раз и с ним гемора больше. Смотри,
> что для тебя важнее.
Думаю, сделаю как ты посоветовал, создам пару лишних полей и буду заполнять их триггером. Даже однополе MMYYYY. И думаю с триггером гемора никакого не будет. Один раз написал, а остальное он сам всё сделает.
Спасибо всем за советы.
Alexandr (2002-11-26 08:09:00) [6]1) Calculated поле даст тормоза на селекте каждый раз, триггерное поле - на изменении один раз и с ним гемора больше. Смотри, что для тебя важнее.
2) Группировка по функциям еть далеко не но всех версиях (и в IB клонах только в Yaffil, по-моему), и уж индексы тут пролетают точно.
BlackTiger (2002-11-23 15:31:00) [7]Я тут выкладывал как-то текст ХП для MSSQL (crosstab, pivot).
Может его можно адаптировать для IB.
Может в IB есть свои средства (SQL-команды) для "перевертышей", как у MSAccess?
sniknik (2002-11-23 15:20:00) [8]Почему нельзя сделать групировку по месяцам?
типа
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 так нельзя?
-=Sergeante=- (2002-11-23 14:57:00) [9]
> Alexandr © (23.11.02 08:07)
> но если хочется быстро и не жалко несколько лишних байтов
> в базе данных, то создай поля в таблице число, месяц, год...
> Заполняй их триггерами, а потом при селекте группировку
> по ним делай.
> Летать будет.
Это идея. А если сделать CALCULATED-поле на стороне сервера? Производительность упадёт сильно?
Alexandr (2002-11-23 08:07:00) [10]но если хочется быстро и не жалко несколько лишних байтов в базе данных, то создай поля в таблице число, месяц, год...
Заполняй их триггерами, а потом при селекте группировку по ним делай.
Летать будет.
Johnmen (2002-11-23 01:17:00) [11]См. в сторону UNION и функции extract
MOA (2002-11-22 20:22:00) [12]Попробуйте завести таблицу с границами месяцев, затем JOIN с этой таблицей. Конечно, не стоит забывать о високосных годах.
Удачи!
-=Sergeante=- (2002-11-22 18:44:00) [13]Нет других вариантов, кроме как перебором в цикле? Может можно группировкой как-нибудь?
3JIA9I CyKA (2002-11-22 18:31:00) [14]да