在Business Objects中将两行与共享列值组合在一起

时间:2016-06-23 18:53:49

标签: sql business-objects

目前我的报告看起来像这样:

C1   C2   Var1     Var2
a    b     A       <empty>
a    b    <empty>    B
a    b    <empty>    C
c    d     A       <empty>
e    f    <empty>    B

在我的数据集中,有些记录在C1和C2中共享相同的值,但在第三列C3中有所不同。 Var1和Var2是使用C3的变量。变量定义如下:

Var1 = [C3] Where ([C3] InList ("A"))
Var2 = [C3] Where ([C3] InList ("B";"C"))

我想组合列C1和C2中的值相同的行,如果其中一个为空,则将Var1和Var2组合在一起。我希望报告以下列方式显示:

C1   C2   Var1     Var2
a    b     A         B
a    b     A         C
c    d     A       <empty>
e    f    <empty>    B

这实际上与SQL中的以下查询相同:

Select T1.C1, T1.C2, T2.C3, T3.C3 from tableone T1
Left Join tabletwo T2 on
T1.C1 = T2.C1 and T1.C2 = T2.C2 and T2.C3 = 'A'
Left Join tabletwo T3 on
T1.C1 = T3.C1 and T1.C2 = T3.C2 and T3.C3 in ('B','C');

在上面的SQL中,tableone对每个唯一(C1,C2)对都有一行。在tabletwo中,可能有多个行具有不同的C3值,这些行共享C1和C2。

Business Objects中是否有一种方法可以组合行,其中一行具有空Var1或Var2而另一行在同一列中具有值?

1 个答案:

答案 0 :(得分:0)

我使用Dimension Detail变量在同一行上显示共享C1的记录的不同C3值。

首先,我使用了两个查询,每个查询都使用不同的限制来获取C3。查询还抓取了共享的C1列。我使用了以下查询过滤器:

For query 1: C3 InList('A')
For query 2: C3 InList('B';'C')

我合并了两个查询中的共享C1列,然后,我创建了两个新变量Case1和Case2。 Case1和Case2是指合并C1的详细尺寸。

Case1=[Query1].[C3]
Case2=[Query2].[C3]

现在Case1和Case2等于我想要的C3的两组不同的值。由于这些变量都是附加到共享C1的详细信息,因此我能够创建一个表,其中两个变量都引用它们的共享C1。