从详细信息创建摘要跟踪报告

时间:2011-09-12 21:55:22

标签: sql sql-server-2005

我需要根据详细数据创建摘要月度跟踪报告。数据样本如下:

  

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

我需要创建一个报告,以下面的格式向我提供来自特定国家/地区的特定月份加入的成员数量:

  

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

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

1 个答案:

答案 0 :(得分: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,每个国家/地区将是一个单独的序列。 Psuedo代码满足您的需求:

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