如何在SSRS饼图中拆分切片为两个子切片并显示对应数值?
当然可以实现这个需求!下面是一步步的实操方法,帮你把每个编号对应的两个数值拆成饼图的独立子切片,还能自定义指定切片的颜色和显示内容:
实现SSRS饼图拆分主切片为子切片的步骤
1. 先把数据转成适合的格式
你的原始数据是扁平的一行对应一个编号+两个数值,我们需要把它转换成长格式——每个子切片对应一行数据。比如原数据里的1773004. 5 1,要拆成两行:
| 编号 | 子项类型 | 数值 |
|---|---|---|
| 1773004 | 子项1 | 5 |
| 1773004 | 子项2 | 1 |
如果是用SQL数据集,你可以用UNION ALL来拆分每一行,示例代码如下(假设你的原始数据存在表YourData里,ID是编号,Val1和Val2是对应的两个数值):
SELECT ID AS 编号, '子项1' AS 子项类型, Val1 AS 数值 FROM YourData UNION ALL SELECT ID AS 编号, '子项2' AS 子项类型, Val2 AS 数值 FROM YourData
要是你的原始数据是文本导入的,先在数据集里用字符串拆分工具(比如SQL Server的STRING_SPLIT)把每个编号后的两个数字拆成独立字段,再用上面的方法转换格式。
2. 配置饼图的分组
- 在SSRS报表里添加一个饼图控件。
- 把「数值」字段拖到饼图的值区域,把「编号」拖到类别组,再把「子项类型」拖到系列组。这样每个编号就会自动拆分成两个子切片,对应它的两个数值。
3. 给指定子切片设置红色(比如1773004的子切片)
- 右键点击饼图,选择「系列属性」。
- 切换到「填充」选项卡,点击「表达式」按钮,输入条件格式表达式:
=IIF(Fields!编号.Value = "1773004" AND Fields!子项类型.Value = "子项1", "Red", "Default")
要是你想让1773004的第二个子切片变红,把表达式里的子项1改成子项2就行,也可以换成其他颜色值。
4. 在子切片上显示数值
- 右键点击饼图的切片,选择「显示数据标签」。
- 再右键点击数据标签,选择「标签属性」。
- 在「标签数据」里输入表达式,显示对应的数值:
=Fields!数值.Value
如果想同时显示编号和数值,可以写成:
=Fields!编号.Value & ": " & Fields!数值.Value
小提示
- 如果有些编号不需要拆分,你可以在「系列组属性」的「可见性」里设置条件,隐藏对应的子切片。
- 要是需要调整子切片的大小比例,直接用数值字段的大小来控制就行,SSRS饼图会自动按数值占比显示切片大小。
这样就能完全实现你想要的效果啦!
内容的提问来源于stack exchange,提问作者John Connolly
相关产品推荐
相关产品推荐

