当我开始研究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
如果有人面对这种要求会很有帮助,请帮助我。
答案 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,要么最好在应用程序代码中处理它。