Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: кроссовый запрос как OLAP
Форумы портала PHP.SU » » Работа с СУБД » кроссовый запрос как OLAP

Страниц (1): [1]
 

1. aleks - 20 Июля, 2011 - 10:40:02 - перейти к сообщению
Можно ли так сделать?

Суть, в таблице лежит id, наименование, дата в формате '2011-07-21', и сумма в деньгах

как мне сделать запрос, чтобы получилась таблица
в заголовке
id,месяц по порядку типа '2011-01-01','2011-02-01','2011-03-01' ...

а в пересечении стояло общая сумма в деньгах за весь месяц (своего рода агрегация по дате)


На мой взгляд так нельзя сделать? Можно ли сделать без вложенных запросов?

Или может есть какие-то хитрые бибилиотеки на php, которые подобные вещи (типа OLAP) возволяют генерировать?
2. Мелкий - 20 Июля, 2011 - 10:51:01 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `date`,sum(`money`) AS `sum` FROM `table` GROUP BY `date` ORDER BY `date`
3. aleks - 20 Июля, 2011 - 13:53:10 - перейти к сообщению
Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `date`,sum(`money`) AS `sum` FROM `table` GROUP BY `date` ORDER BY `date`


не, дата может быть любая
а нужно агрегировать данные за весь месяц, образно говоря должны быть создана столбцы за месяца, когда данные присутствуют
4. Мелкий - 20 Июля, 2011 - 14:36:23 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT date(`date`) AS `monat`, sum(`money`) AS `sum` FROM `table` GROUP BY `monat` ORDER BY `monat`

 

Powered by ExBB FM 1.0 RC1