SSRS - 如何根据条件缩进行?

SSRS - How to indent row based on a condition?

在 SSRS 中,我有一个报告,例如:

Designation                Type          Amount

Admin1                     Gift           50
Admin1                     Payment        50
Admin1                     Payment        50
Admin2                     Gift           100       

所以基本上 Admin1 可以收到 50 美元的礼物,从那时起,任何为此同一名称支付的额外款项都将被归类为付款,我想缩进与此相关的相应付款初始礼物看起来像这样:

Designation                Type          Amount

Admin1                     Gift           50
     Admin1                Payment        50
     Admin1                Payment        50
Admin2                     Gift           100

我的逻辑是,如果名称相同,并且名称有支付类型,那么它们必须缩进到类型为礼品的相同名称下方。

我以前从未在 SSRS 中使用过缩进,这可以吗?

您可以在 SQL 中执行此操作:

select (case when type = 'Payment' then concat('     ', designation)
             else designation
        end) as designation, type, amount
from t
order by designation, type;

SSRS中可能有完全不同的方法。

您需要在报告中添加一个按名称分组的行组。如果您目前只有一个 'details' 行组,那么 right-click 它并添加一个父组。如果生成了新列,可以删除,但不要删除组。

假设您在创建此行组时将其命名为 grpDes

接下来,在需要调整的文本框中,点击它,在属性面板中,找到“padding”展开,点击“left”的下拉菜单,选择“expression”。

将表达式设置为类似于

=IIF(ROWNUMBER("grpDes") >1 AND Fields!Type.Value = "Payment", "10pt", "2pt")

10pt 调整为任何你想要的...

请注意,组名必须用引号引起来并且区分大小写。

所以它的作用是按指定对数据进行分组,然后检查每个组中的行号。如果该行不是组中的第一组且类型为“付款”,则将填充设置为 10 点,否则将其设置为 2pt(SSRS 默认值)