2011-09-12 56 views
0

我需要根据详细数据创建汇总每月追踪报告。样本数据如下:根据详细信息创建汇总跟踪报告

公司|国家|加入日期
公司A | USA | 1/1/2011
公司B |爱尔兰| 5/5/2011
公司C |意大利| 7/11/2011
公司D |德国| 6/14/2011

我需要创建一份报告,给我,在给定月份加入来自某一特定国家成员的数量,在下面的格式:

国家1 |总计(一月)|总计(二月)|总计(三月等)|总和(月总计)
国家2 |总计(一月)|总计(二月)|总计(三月等)|总和(每月总计)
国家3 |总计(一月)|总计(二月)|总计(三月等)|总和(每月总计)

在每列的底部,我需要每个月的所有国家的总和。此外,此报告需要是滚动报告,因此当用户生成报告时,报告将提供最新的信息。

回答

0

您将要分两部分来完成此操作。

首先,您将要从数据库中获取相关数据。也许最好的一份声明中实现,例如:

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