如何在ssrs中动态添加列

时间:2017-02-26 06:39:42

标签: sql-server ssrs-2008 rdlc

当我开始研究SSRS报告时,我提出了一个要求,根据我得到的结果集,需要渲染几列。

想象一下,用户已经订阅了保险计划,并且根据计划他选择了他可能会获得不同的群组。

    `User        Name     Valid    Group1      Group2    Group3    Group4  `
 ________________________________________________________________________
     1           Luther    X         X                                  
     2           Lynn                             X                      
     3           Wolfe               x                                     
     4           Jenny     x                                          x

如果您看到上述各个保险计划可能会有所不同。我可以从我的数据库中获取最大数量的组。现在我通过对所有组进行硬编码来成功。但它并不完美,因为使用当前的方法,我将显示所有组甚至我的计划仅包含最大组4。在ssrs中我可以动态生成标题列。

我的结果集查询非常简单:

SELECT USER
     ,NAME
     ,Valid
     ,Opted_GROUP
     ,MaxGroups
     FROM tblInsurancePlans  WHERE InsurancePlanId = @PlanId

如果有人面对这种要求会很有帮助,请帮助我。

1 个答案:

答案 0 :(得分:0)

使用聚合:

select user,
    name,
    max(valid),
    max(case when opted_group = 'Group1' then 'X' end) group1,
    max(case when opted_group = 'Group2' then 'X' end) group2,
    max(case when opted_group = 'Group3' then 'X' end) group3,
    max(case when opted_group = 'Group4' then 'X' end) group4,
    . . .
from tblInsurancePlans
where InsurancePlanId = @PlanId
group by user,
    name

以上要求您知道将会有多少组。如果你有动态没有。对于组,你要么需要动态SQL,要么最好在应用程序代码中处理它。