Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
14-81457
igorr
2002-06-27 09:31
2002.07.25
Прерывания


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


1-81299
HEXBAT
2002-07-12 10:53
2002.07.25
Помогите с Маской ввода Плиз


3-81198
Gunner
2002-07-04 20:23
2002.07.25
Кто может перечислить типы полей для MsAccess 2000


1-81290
AL2002
2002-07-11 20:53
2002.07.25
Скажите, а как узнать размер массива?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский