2

我在一个名为 Subs 的表中有 2 个外键列(比如 PONo、InvoiceNo)。在单个记录中,PO 或 Invoice 或 Both 都会有一些数据(无 Null)。当 PO 和 Invoice 都有数据时,我只需要考虑 InvoiceNo 而不是 PONo。

我必须使用上述查询来生成报告。因此,我需要按 PONo 或 InvoiceNo 分组以发送给特定的供应商。我不知道如何将两列组合为一列。特别是,当两条记录中的 PoNo 和 InvoiceNo 都相同时,我需要生成 2 个不同的字母而不是 1 个。请考虑以下情况,

  SubsId                  PONO         Issue           InvoiceNo          Supp

    1                     001          XX              null              abc
    2                     null         YY              001               abc
    3                     null         ZZ              001               abc

如果上面的表格值是这种情况,那么我需要得到这样的结果,

信 1

    PONO        Issue         InvoiceNo       Supp

    001          XX           null            abc

信 2

    PONO        Issue         InvoiceNo       Supp

    null         YY           001             abc
    null         ZZ           001             abc

因为,我需要将 PONo 或 InvoiceNo 的报告显示为单个组。

我到处搜索,将 2 列分组为 SSRS 中的 1 组。但是,我没有找到任何解决方案。所以,请帮我解决这个问题。

谢谢

4

2 回答 2

2

您可以像这样将计算字段添加到您的数据集中:

=IIf(IsNothing(Fields!InvoiceNo.Value)
  , "P" & Fields!PONO.Value
  , "I" & Fields!InvoiceNo.Value)

调用它GroupNumber或任何你喜欢的。在您的示例中,它看起来PONOInvoiceNo都是字符串,所以我只是将类型标识符字符串连接到它们。如果它们是数字,您可以根据需要将它们转换为上述表达式中的字符串。

这实现了您的两个目标,即能够同时使用两者PONOInvoiceNo作为一个分组项,但也能够区分这两种类型,因此具有相同数字的值PONO不会分组为一个组项。InvoiceNo

然后,在报表中设置 Tablix 组时,您可以在这个新字段上进行分组。它永远不需要显示在任何地方,它只是用于分组;这应该可以按您的要求工作。

于 2013-09-28T11:31:03.917 回答
1

您可以使用TSQL Coalesce语句、TSQL Case When 语句或 SSRS IIF(compareison, Truepart, falsepart)

TSQL 合并

select colalesce(InvoiceNo, PONO) as Number, Issue, Supp
from mytable1 join mytable2 etc
Group By colalesce(InvoiceNo, PONO), Issue, Supp

TSQL 案例何时

Select case When InvoiceNo is null then PONO
           else InvoiceNo END as Number, Issue, Supp
    from mytable1 join mytable2 etc
    Group By case When InvoiceNo is null then PONO
           else InvoiceNo END , Issue, Supp

SSRS

数字文本框表达式

=IIF(Fields!InvoiceNo.value ="", Fields!PONO.value, Fields!InvoiceNo.value)
于 2013-09-28T06:44:38.180 回答