Создание сводного отчета по отслеживанию из деталей - PullRequest
0 голосов
/ 13 сентября 2011

Мне нужно создать сводный ежемесячный отчет об отслеживании на основе подробных данных. Образец данных выглядит следующим образом:

Компания | Страна | Дата присоединения
Компания А | США | 1/1/2011
Компания Б | Ирландия | 5/5/2011
Компания C | Италия | 7/11/2011
Компания D | Германия | 14.06.2011

Мне нужно создать отчет, в котором будет указано количество членов, присоединившихся за данный месяц из данной страны, в следующем формате:

Страна 1 | Всего (январь) | Всего (февраль) | Итого (март и т. Д.) | Сумма (месячные итоги)
Страна 2 | Всего (январь) | Всего (февраль) | Итого (март и т. Д.) | Сумма (месячные итоги)
Страна 3 | Всего (январь) | Всего (февраль) | Итого (март и т. Д.) | Сумма (месячные итоги)

В нижней части каждого столбца мне понадобится сумма за каждый месяц для всех стран. Кроме того, этот отчет должен быть скользящим, поэтому, когда пользователь его создает, он будет предоставлять самую свежую информацию.

1 Ответ

0 голосов
/ 13 сентября 2011

Вы захотите сделать это в двух частях.

Сначала вы захотите получить соответствующие данные из базы данных. Вероятно, лучше всего это можно сделать, например:

SELECT country, year(join_date) as year, month(join_date) as month, count(*)
FROM trackingTable
WHERE join_date between :start_date and :end_date
GROUP BY country, year(join_date), month(join_date)
ORDER BY country, year, month

Для ваших данных будет сгенерирован следующий пример:

Country    Year   Month  Count
==================================
Germany    2011   6      1
Ireland    2011   5      1
Italy      2011   7      1
USA        2011   1      1

Во-вторых (и я предполагаю, что вы создаете / форматируете отчет на внешнем языке), последовательно просматривайте данные. Учитывая ORDER BY, каждая страна будет отдельной последовательностью. Псуедо-код для ваших нужд:

for each row in set {
   if different country {
      total up row, start new line
   }
   add month cell to column;
   add month cell to month grand total;
}
total up grand total row, print/save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...