Sql SSRS-重复项上的抑制和列总数

Sql SSRS-重复项上的抑制和列总数,sql,reporting-services,Sql,Reporting Services,我有一份报告,其中我需要在重复(完成)时抑制文本列,但也需要总计两列数字(借方和贷方净额),保留其他两列(ccy和ccy金额)按原样逐项列出 在处理以下数据时: DESCRIPTION DEBIT CREDIT CCY CCY AMOUNT 332300 Creditors 0.00 0.50 EUR -0.50 339003 Sundry Creditors

我有一份报告,其中我需要在重复(完成)时抑制文本列,但也需要总计两列数字(借方和贷方净额),保留其他两列(ccy和ccy金额)按原样逐项列出

在处理以下数据时:

DESCRIPTION                  DEBIT        CREDIT     CCY    CCY AMOUNT
332300 Creditors              0.00          0.50     EUR         -0.50
339003 Sundry Creditors       0.00      4,423.39     EUR     -4,423.39
339003 Sundry Creditors   4,241.50          0.00     GBP      3,587.50
340101 Ordinary Shares        0.00          1.41     GBP         -1.00
395000 Revenue Reserves       0.00    196,850.46     EUR   -196,850.46
395000 Revenue Reserves       0.00    967,816.68     GBP   -797,995.90
复制时,我设法超出了描述,但只想显示适当的借方或贷方净额,只留下ccy和金额分项,如下所示:

DESCRIPTION                  DEBIT        CREDIT      CCY    CCY AMOUNT
332300 Creditors                            0.50      EUR         -0.50
339003 Sundry Creditors                   181.89      EUR     -4,423.39
                                                      GBP      3,587.50
340101 Ordinary Shares                      1.41      GBP         -1.00
395000 Revenue Reserves             1,164,667.14      EUR  - 196,850.46
                                                      GBP   -797,995.90

如果您能帮助解决或协助解决此问题,我们将不胜感激。

根据
说明
字段(组无标题行)设置一个包含组的表格:

由于您使用的是SSRS 2008R2,因此在创建组时,默认情况下将创建最左边的列,因此无需额外操作

我们为每一行显示
CCY
CCYAMOUNT
,因此它们只是作为普通字段添加

借方
贷方
的表达式要复杂一些

信用证

=IIf(RowNumber("DESCRIPTION") = 1
        and Sum(Fields!DEBIT.Value, "DESCRIPTION") - Sum(Fields!CREDIT.Value, "DESCRIPTION") > 0
    , Sum(Fields!DEBIT.Value, "DESCRIPTION") - Sum(Fields!CREDIT.Value, "DESCRIPTION")
    , Nothing)
=IIf(RowNumber("DESCRIPTION") = 1
        and Sum(Fields!CREDIT.Value, "DESCRIPTION") - Sum(Fields!DEBIT.Value, "DESCRIPTION") > 0
    , Sum(Fields!CREDIT.Value, "DESCRIPTION") - Sum(Fields!DEBIT.Value, "DESCRIPTION")
    , Nothing)
基本上只需切换
借方的列逻辑即可:

=IIf(RowNumber("DESCRIPTION") = 1
        and Sum(Fields!DEBIT.Value, "DESCRIPTION") - Sum(Fields!CREDIT.Value, "DESCRIPTION") > 0
    , Sum(Fields!DEBIT.Value, "DESCRIPTION") - Sum(Fields!CREDIT.Value, "DESCRIPTION")
    , Nothing)
=IIf(RowNumber("DESCRIPTION") = 1
        and Sum(Fields!CREDIT.Value, "DESCRIPTION") - Sum(Fields!DEBIT.Value, "DESCRIPTION") > 0
    , Sum(Fields!CREDIT.Value, "DESCRIPTION") - Sum(Fields!DEBIT.Value, "DESCRIPTION")
    , Nothing)
最终结果看起来像您的需求:


在上面的表达式中有两件事需要注意-我们仅当结果是组范围中的第一行(
RowNumber(“DESCRIPTION”)=1
)时显示结果,并且仅当特定列,即
借方
贷方
大于同一集团范围内的对应方。

您可以尝试以下解决方案。 在dataset查询中添加一个派生列,如下所示。我假设您的数据集是根据帐户描述排序的,如果不需要排序的话

总额(贷方+借方)超过(按账户描述划分)净额

在SSRS tablix中,借方列使用以下表达式

=Iif(先前的(字段!AccountDescription.Value)=字段!AccountDescription.Value,”,Iif(字段!净值>0,Abs(字段!净值),“”)

在SSRS tablix中,对信用栏使用以下表达式


=Iif(上一个(字段!AccountDescription.Value)=字段!AccountDescription.Value“”,Iif(Fields!Net.Values在您的示例中,杂项债权人在最终输出中是否正确?是否也应该有一些GBP组件?此外,这是什么版本的SSRS?是的,杂项债权人是正确的,在图1中,欧元价值为4423.39 CR,英镑等值欧元为4241.50 DR,使用SQL Server 2008时,欧元净值为181.89 CRI'm伊恩,我在另一个论坛上也收到了以下内容,效果不错,但感谢你的帮助……这也会按照我的要求起作用。