Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSRS报告:如何创建这样的月度/年初至今报告?_Sql Server_Visual Studio 2008_Tsql_Sql Server 2008_Reporting Services - Fatal编程技术网

Sql server SSRS报告:如何创建这样的月度/年初至今报告?

Sql server SSRS报告:如何创建这样的月度/年初至今报告?,sql-server,visual-studio-2008,tsql,sql-server-2008,reporting-services,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,

我有一张这样的桌子:

-------------------------------------------------------------------
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子句中省略了MOUNT参数,我将得到年初至今所需的所有行——但是如何在顶部只显示单个月份呢


提前谢谢

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

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

保留已有的数据集。还不必担心年初至今。 创建第二个数据集,按项目分组查找给定客户的YTD。查找功能可以根据第一个数据集中的项目编号查找第二个数据集中的YTD

希望这有帮助

附加答案


几乎忘记了子报告。您可以创建第二个报表,该报表采用1个参数CustNum,并在表中显示YTD。将此作为子报告添加到主报告中。一个很好的位置应该是在表尾。

也许可以将问题分成更小的问题,包括测试数据,包括所有字段,如您引用的日期。并期望得到更多的答复。我添加了请求的示例数据和所需的输出。我正在使用Visual Studio 2008为SSRS报告生成一个.rdl文件。抱歉,我在帖子中没有具体说明,因为我用VS2008和SSRS标记了它。我认为我正在努力解决的问题的关键是,如何对年初至今的月份进行求和,同时仍然保留我查询的单个月份的值——所有这些都在同一个报表定义中?我使用的是一个矩阵,但可能这是错误的方法?完全是我的错,我只是看到了sql。我希望您可以使用它或其中的一部分,因为它与您要求的非常接近。这听起来像我希望找到的,现在我需要检查我们使用的SQL的版本。。。我会发回的。谢谢好吧,我希望你的建议能帮助我解决这个问题,但我们将在SQL 2008上停留一段时间(没有R2)。有没有其他方法可以达到同样的效果?或者,您能想出一种方法,在同一矩阵中的多个位置(非相邻行)使用数据集中的一行吗?