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

Вниз

SQL Запрос с группировкой по месяцам   Найти похожие ветки 

 
Pro ©   (2002-07-04 07:26) [0]

Суть проблемы - есть табличка с полями - дата,сумма,
(вообще больше но не в них дело)
так вот - некоторые дни заносится запись в табличку с какой то суммой. Так вот - нужно соорудить отчетик - ежемесячное накопление сумм.
типа
01.02 * сумма за январь
02.02 * сумма за февраль
и т.д.

Господа мастера - подскажите плиз


 
ПИТОН   (2002-07-04 07:48) [1]

Что-то типа
Select month(date), year(date), sum(summa)
Group by month(date), year(date)


 
perov ©   (2002-07-04 08:08) [2]

в оракле это делается так
select to_char(incomedate, "mm.yyyy"), sum(summa)
from payments_tab
group by to_char(incomedate, "mm.yyyy")

а насчет ФоксПро и БДЕ не уверен, что там есть функции для выделения компонентов даты


 
Pro ©   (2002-07-04 08:17) [3]

to ПИТОН
Спасибо!
почти так как я и хотел
токо вот месяца он сортирует так - 1,11,12,2
я его понимаю конечно :) - но мне бы в порядке как они есть в году. есть мысли ?

и еще - если мне это дело в отчет пихать - мне надо еще итоги по годам и за весь период. Подскажите - а то я репорты еще ниразу не делал.


 
ПИТОН   (2002-07-04 08:50) [4]

Можно и так
Select month(date)+year(date)*100, sum(summa)
Group by month(date)+year(date)*100



 
Pro ©   (2002-07-04 09:00) [5]

Извиняюсь конечно, но где то я откровенно туплю
чисто в Fox Pro 2.6 все это дело работает, а вот BDE ....
создал табличку в SQL Explorere с дельфями который идет (dBase, FoxPro) с полем дата
так он вообще не понимает mount и year
(элементарно select year(dt) from table не пашет )
и вообще где можно спецификацию SQL скачать под конкретный тип БД
чтоб там полный список хитрых функции был (типа year)


 
Johnmen ©   (2002-07-04 09:09) [6]

Да нет там таких ф-ий !
Придется тебе отдельно хранить № месяца, или, другой вариант, сильно извращаться в клиентской проге...

>ПИТОН (04.07.02 08:50)
>Можно и так
>Select month(date)+year(date)*100, sum(summa)
>Group by month(date)+year(date)*100

А можно поинтересоваться, в какой СУБД это работает..? :)




 
Pro ©   (2002-07-04 09:21) [7]

>Johmen
это работает в FoxPro 2.6 for Windows
т.к. там он запрос обрабатывает вместе с функциями самого языка

>ПИТОН
выводит 012001 142001
а нормальном формате - типа 01.2001 ?
month(date)+"."+year(date)*100 - не работает





 
ПИТОН   (2002-07-04 09:34) [8]

Johnmen © (04.07.02 09:09)
А можно поинтересоваться, в какой СУБД это работает..? :)
Access 2000

Pro © (04.07.02 09:21)
При выводе делай :
Str(Int(DT/100000))+"."+Str(MOD(DT,10000))


 
Johnmen ©   (2002-07-04 09:39) [9]

Я что-то не уловил, тебе отчетик нужен в Дельфях или в FoxPro 2.6 for Windows ?
Ты уж определись...


 
Johnmen ©   (2002-07-04 09:41) [10]

>ПИТОН (04.07.02 09:34)

А в вопросе по-моему нет ни слова про Access 2000 ...




 
Pro ©   (2002-07-04 10:10) [11]

Всем спасибо!
>Johmen
просто я делаю и там и там
сначала в Fox потом переделывать буду на Delphi
и видимо на дельфи буду под Access2000 писать,
а то уж сильно я испугался про заморочки с хранением месяца или извратом в клиенте
>ПИТОН
special thank !


 
ПИТОН   (2002-07-04 10:22) [12]

Johnmen © (04.07.02 09:41)
>ПИТОН (04.07.02 09:34)

А в вопросе по-моему нет ни слова про Access 2000 ...


Я просто привел пример



 
Johnmen ©   (2002-07-04 10:26) [13]

Смею утверждать, что конструкции типа
....
Group by month(date)+year(date)*100
...
не будут работать нигде, кроме как в тех средах, которые предназначены для конкретной СУБД.




 
Ина   (2002-07-04 12:01) [14]

вот запрос к foxpro 2.6
у меня четко работае, в фоксе вообще-то много функций
для работ с датами! Если еще что-нибудь надо - спрашивай.
На счет особенностей SQL для разных сред - это только help-е конкретной среды(разве у тебя нет?)

select month(date) as mon, year(date) as yr, sum(summa);
from table1.dbf ;
group by yr,mon

получаем
1 2001
2 2001
...
12 2001
1 2002
...
А какую базу планируешь далее использовать, для Дельфи?
Лучше не плодить базы, а сразу проектировать навсегда - как данные то будешь перекачивать?


 
kaif ©   (2002-07-04 12:12) [15]

Могу дать дельный совет. Когда я работал в Interbase 5.6 и там еще не было функций выделения YEAR, MONTH, я решил эту задачу просто - соорудил дополнительную таблицу-календарь типа:
Calendar(date,year,month,day,week,week_day),
в которую в начале каждого года программно заносил записи на все даты.
Потом делал объединение этой таблицы с любой другой таблицей- накопителем и группировал суммы как угодно (хоть по дням недели).


 
Pro ©   (2002-07-04 12:47) [16]

> Ина
База уже есть - и написана очень криво на FoxPro надо срочно к ней сделать репорт (чем я щас и занимаюсь)
а переписываю я ее потихоньку под IB и данные рано или поздно перекачивать придется (и вопрос с группировкой поднимется и там)
вот я и слушаю всех во все уши - всё пригодится

а как ты написала - не получаем , там с сортировкой проблемы (1,11,12,2) - но тут мне ПИТОН подсказал

>Kaif совет воспринят, оценен и записан

ВСЕ думаю уже можно вопрос закрыть - дальше я сам домучаю.
всем спасибо.

понравилось мне с Вами - так что не прощаюсь
до скорых встреч мастера !



Страницы: 1 вся ветка

Текущий архив: 2002.07.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
3-81143
lejik
2002-07-01 13:08
2002.07.25
Как востановить таблицу


1-81285
BlackSun
2002-07-11 00:12
2002.07.25
TEmbeddedWB. Плиз, мастера, помогите!!!


14-81445
svet
2002-06-27 15:19
2002.07.25
Иконки


3-81185
Octav
2002-07-04 19:23
2002.07.25
Blob


7-81498
Crypter
2002-05-08 14:37
2002.07.25
Как узнать о том, что нажали на