SSRS报告:如何创建这样的月度/年度报告?

时间:2011-07-14 18:34:07

标签: sql-server visual-studio-2008 tsql sql-server-2008 reporting-services

我有一个看起来像这样的表:

-------------------------------------------------------------------
CUSTNUM (INT), ITEMNUM (INT), MONTH (INT), YEAR (INT), AMOUNT (INT)
-------------------------------------------------------------------
100000, 489, 1, 2011, 4000
100000, 489, 2, 2011, 3000
100000, 489, 3, 2011, 5000
100000, 587, 1, 2011, 7500
100000, 587, 2, 2011, 6800
100000, 587, 3, 2011, 9000

我想要创建的是一份报告,显示客户在特定月份和年份购买的每件商品。 在同一页,我想要一张表(相同矩阵的一部分或任何需要的表),每一行都有按itemnum分组的年初至今销售。

最终结果应该是每个客户的类似摘要的页面(可能是多个页面),其中月度销售额位于顶部,而年底至今的每个项目摘要总结

以下是2011年3月查询时所需的输出结果:

-----------------------
Customer: 100000
-----------------------
Item    Month Quantity
-----------------------
489     5000
587     9000
-----------------------
Total   14000

------------------------
Item    Year-to-Date Qty
------------------------
489     12000
587     23300
------------------------
Total   35300

下一个分页符将是具有类似布局的新客户。

具体来说,我正在努力解决事情的查询方面应该是什么样子。我有一个特定月份的工作查询 - 如果我从where子句中省略MONTH参数,我会获得年初至今所需的所有行 - 但是我如何才能显示单个月的所有行顶部?

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果您使用的是SQL 2008 R2,请使用查找功能。此功能在早期版本中不可用。

保留您已有的数据集。无需担心YTD。 创建第二个数据集,逐个项目查找给定客户的YTD。查找功能可以根据第一个数据集中的项目编号在第二个数据集中找到YTD。

希望这有帮助。

其他答案

几乎忘记了分报告。您可以创建一个带有1个参数的第二个报表:CustNum,并在表中显示YTD。将此作为子报告添加到主报告中。桌面页脚会有一个好地方。

答案 1 :(得分:0)

Sql不是为制作报表而设计的,它旨在提取您的数据,因此excel,报表生成器或其他一些工具可以设置设计。我希望你能用这个。

declare @t TABLE (custnum int, itemnum int, month int, year int, amount int)

DECLARE @m INT
DECLARE @y INT

set @m = 3
set @y = 2011

insert @t values(100000, 489, 1, 2011, 4000)
insert @t values(100000, 489, 2, 2011, 3000)
insert @t values(100000, 489, 3, 2011, 5000)
insert @t values(100000, 587, 1, 2011, 7500)
insert @t values(100000, 587, 2, 2011, 6800)
insert @t values(100000, 587, 3, 2011, 9000)

SELECT custnum customer, itemnum item, sum(amount) [Month Quantity]
FROM @t
WHERE MONTH = @m
AND year = @y
GROUP BY custnum, itemnum with rollup 

结果:

customer  item     month quantity
100000    498      5000
100000    587      9000
100000             14000 <---(total for this customer)
                   14000 <---(grand total for all customers)


SELECT itemnum item, sum(amount) [Year-to-Date Qty]
FROM @t
WHERE year = @y
GROUP BY itemnum with rollup

结果:

item      Year-to-Date Qty
489       12000
587       23300
          35300