如何在SSRS中动态创建表

时间:2018-02-20 08:54:46

标签: sql reporting-services

我是SSRS的初学者,也许这听起来很容易,但我想知道如何根据我的数据集中返回的行数动态创建表(选择查询)。

如果我有5行,则应该在5个不同的表中显示。

实施例: 选择查询:

ID | Name | Age
01 | Mike | 10
02 | Mary | 12

然后在我的ssrs中:

ID   | 01
Name | Mike
Age  | 10

ID   | 02
Name | Mary
Age  | 12

2 个答案:

答案 0 :(得分:1)

您可以使用SQL CURSOR

执行此操作
DECLARE @table_name as nvarchar(100)
DECLARE @count int = 0
DECLARE @id, @name as nvarchar(255)
DECLARE @age as int
-- declare cursor

DECLARE tbl_cursor CURSOR FOR     
   SELECT [id], [name], [age] FROM [SourceTable]

OPEN tbl_cursor    
   FETCH NEXT FROM tbl_cursor INTO @id, @name, @age
   WHILE @@FETCH_STATUS = 0     -- ok 
      BEGIN
         -- create table with temp name
         CREATE TABLE temp_table (
            [id] nvarchar(255),
            [name] nvarchar(255),
            [age] int
         );
         INSERT INTO temp_table ([id], [name], [age]) VALUES (@id, @name, @age)
         -- rename temp table
         SET @count = @count + 1
         SET @table_name = 'tblTable' + CAST(@count as varchar)
         exec sp_rename temp_table, @table_name

         FETCH NEXT FROM tbl_cursor INTO @id, @name, @age
       END        
       -- close cursor 
CLOSE tbl_cursor        
DEALLOCATE tbl_cursor

如果SELECT [id], [name], [age] FROM [SourceTable]返回五行,代码将创建五个表[tblTable1..5]

答案 1 :(得分:0)

有几种方法可以做到这一点,最简单的方法是做一个普通的表格,并在详细信息组中添加额外的行来分隔表格'输出并为每个字段添加详细信息行。 设计看起来像这样

enter image description here

输出就像这样 enter image description here

另一种方式,它将为您提供完全控制,如果表格很复杂将会有用,创建一个显示单个条目并将ID作为参数的子报表,然后主报表将只是一个列table,在列中插入刚刚创建的子报表,并将ID字段作为参数传递。它没有听起来那么复杂,但是如果你想走这条路,发表评论我会编辑答案。