2011-06-07 120 views
1

从查询,我得到这些结果:报告服务2005年:集团为列

Machine 1, Product A, 1 pal 
Machine 1, Product B, 2 pal 
Machine 1, Product C, 3 pal 
Machine 2, Product D, 2 pal 
Machine 2, Product E, 2 pal 
Machine 3, Product F, 1 pal 

我想创建一个报告,如下所示:

Machine 1 | Machine 2 | Machine 3 
Product A | Product D | Product F 
1 pal  | 2 pal | 1 pal 
Product B | Product E | 
2 pal  | 2 pal 
Product C 
3 pal 

我知道上面的格式很烂但它提供了一个想法。我猜这是与New group in New column相同的问题,但使用另一种技术。有人能够帮助吗?非常感谢,谢谢!

回答

0

下面是使用SSRS Matrix报告项目与SQL Server ROW_NUMBER函数结合实现此目的的一种可能方法。以下示例显示了如何完成此操作。该示例使用SSRS 2005SQL Server 2008 R2数据库。

步骤一步的过程:SSRS 2005

  1. 创建名为dbo.GroupColumns表表示你提供如图截图#的数据。 SQL脚本部分提供了表的创建脚本。

  2. 创建了一个查询,如截图#,将用于创建SSRS数据集。查询在SSRS数据集查询部分提供。屏幕截图#显示Management Studio中的查询输出。查询使用ROW_NUMBER()函数来分配MachineProduct排序的给定Machine内的连续数字。

  3. 在SSRS报告中,放置一个Matrix报告项目。请参阅屏幕截图#。

  4. 拖动并如图截图#丢弃从该数据集到矩阵RowRankMachineProduct值。在包含产品值的小区

  5. 右键单击并选择添加行如图截图#。新的第二列将随新行一起添加。

  6. 将数据集中的Units列拖放到Matrix上,如截图#所示。

  7. 设置宽度财产上第二矩阵列0 (zero),因为我们不想显示该列。即使它设置为零,该值也会变为0.03125 in。屏幕截图#显示应用某些格式化和着色后的Matrix报告项目。

希望有所帮助。

SQL脚本:

CREATE TABLE [dbo].[GroupColumns](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [Machine] [varchar](10) NULL, 
    [Product] [varchar](10) NULL, 
    [Units] [varchar](10) NULL, 
CONSTRAINT [PK_GroupColumns] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY] 
GO 

SSRS集查询:

SELECT ROW_NUMBER() OVER(
      PARTITION BY Machine 
      ORDER BY  Machine 
         , Product 
     ) AS RowRank 
    , Id 
    , Machine 
    , Product 
    , Units 
FROM dbo.GroupColumns 

截图#1:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

5

截图#6:

6

截图#7:

7

截图#8:

8

+0

太好了,这解决了问题!添加rownumber作为一个小组做了窍门,谢谢! – 2011-06-14 07:38:40

0

如果我正确理解您的问题,您可以使用Matrix控件来实现此目的。只需将机器字段放入列组中,然后将产品和副本字段放置在详细信息组中。您可以在表达式中将“= 1”的行组存根。

+0

亲近但并不完全正确呢。如果按“= 1”分组,则只显示第一行。如果我按“= RowNumber(Nothing)”进行分组,则所有数据都会显示,但矩阵中有间隙,例如。 [链接](http://imgur.com/g7d8D) – 2011-06-10 08:02:18