Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Дискретное значение сумм по месяцам.   Найти похожие ветки 

 
-=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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
6-51855
delpher_gray
2002-10-16 13:09
2002.12.16
Передача файлов через сокеты


3-51579
Jackal22
2002-11-27 11:21
2002.12.16
Проблемы с изменением таблицы


4-52014
izhalex
2002-10-31 19:46
2002.12.16
убить окно


14-51929
kronprince
2002-11-25 15:14
2002.12.16
---|Ветка была без названия|---


14-51968
TTCustomDelphiMaster
2002-11-22 23:06
2002.12.16
Водка & Пиво