【问题标题】:SSRS - How to indent row based on a condition?SSRS - 如何根据条件缩进行?
【发布时间】:2020-08-20 21:43:27
【问题描述】:

在 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 reporting-services report indentation iif


    【解决方案1】:

    您需要在报表中添加一个按名称分组的行组。如果您当前只有一个“详细信息”行组,请右键单击它并添加一个父组。如果生成了新列,则可以删除,但不要删除组。

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

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

    将表达式设置为类似

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

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

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

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

    【讨论】:

      【解决方案2】:

      您可以在 SQL 中这样做:

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

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

      【讨论】:

      • 我从没想过通过 SQL 来做,我也可以试试。您上面的代码仅检查 Type = 'Payment' 但它不检查以确保指定是正确的
      • @jwalls91 。 . .这似乎不是您问题的一部分。
      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多