【问题标题】:Concatenate multiple rows data in single cell in a WEBI report在 WEBI 报告中连接单个单元格中的多行数据
【发布时间】:2016-01-04 23:08:19
【问题描述】:

需要关于 BO 4.1 中的 webi 报告的建议 对对齐感到抱歉。

我有一份报告如下:

Country Agent Customer Products
UK Mo Sara Bag
UK Adam Jill Bag
UK Tim Kim Shoes
UK Tim Kim Bag
US John Sam Belt
US John Sam Bag

结果应该是这样的:

Country Agent Customer Products
Country Agent Customer Products
UK Mo Sara Bag
UK Adam Jill Bag
UK Tim Kim Shoes, Bag
US John Sam Belt, Bag

我有 1 个查询拉客户、产品和国家,还有另一个查询拉代理和国家。我已将代理作为与国家/地区关联的详细对象。我得到以下输出

Country Agent Customer Products
UK Mo Sara Bag
UK Adam Jill Bag
UK Tim Kim Shoes
UK Tim Kim Bag
US John Sam Belt
US John Sam Bag

我尝试按照以下说明进行操作 http://bi.srivatsakr.com/2011/08/converting-rows-into-single-cell-comma.html

[VAR Max Products] = Max ([Products] In [Customer])
    
[VAR Concat Products] = [Products]+", "+Previous(Self)
    
[VAR Max Concat Products]= [VAR Concat Products] Where ([Products]=[VAR Max Products])
    
[VAR Product] = If(IsNull(Previous([VAR Max Concat Products]));Substr([VAR Max Concat Products];1;Length([VAR Max Concat Products])-2);Substr([VAR Max Concat Products];1;Pos([VAR Max Concat Products];Previous([VAR Max Concat Products]))-3))

但这给了我这样的结果

Country Agent Customer Products [VAR Product]
UK Mo Sara Bag Bag
UK Adam Jill Bag
UK Tim Kim Shoes, Bag, Shoes
UK Tim Kim Bag
US John Sam Belt Bag, Belt
US John Sam Bag

如果我去掉Product Column,结果如下:

Country Agent Customer Products [VAR Product]
UK Mo Sara Bag
UK Adam Jill
UK Tim Kim
UK Tim Kim
US John Sam
US John Sam

我可以隐藏产品列,但它仍然不会显示正确的结果。 需要一些建议。提前感谢您的帮助。

【问题讨论】:

    标签: business-objects webi


    【解决方案1】:

    我将一些行转换为基于this SAP blog post 的字符串,如下所示:

    _Concat_MyField = Previous(Self) + (If IsNull(Previous(Self)) Then "" Else ", ") + [MyField]
    
    Final = Last([_Concat_MyField] ForEach ([MyField]))
    

    _Concat_MyField 变量将每一行与前一行的值连接起来,Final 变量抓取最后一个条目,这是所有行都已连接到字符串中的条目。

    如果您将[MyField][_Concat_MyField] 放在示例报告中的同一个表格中会更有意义。

    【讨论】:

      【解决方案2】:

      我改变了这两个变量,它工作正常:

      [VAR Concat Products] = Previous(Self)+", "+[Product]
      
      [VAR Product] = Substr([VAR Max Concat Products];3;Length(([VAR Max Concat Products])-2)
      

      【讨论】:

      • 您能否接受自己的回答,让其他人知道问题已解决?
      【解决方案3】:

      我通过改变一个公式使它起作用:

      [VAR Concat Products] = Previous(Self)+ (If IsNull(Previous(Self)) Then "" Else ", ") +[Products]
      

      (我更改了连接顺序,并添加了“If”以防止不必要的逗号)

      这会破坏较长的结果集。 最大可变长度约为。 5000 个字符,连接变量将在几百行后填充。尝试在表格中显示“Concat Products”和“Max Concat Products”的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多