交叉报表中分组后拼接串成员

【问题】

两个问题:

1、Tamnguyen:

I have followed the instruction about FIRST function, and it works. But from my side, the data table look like this:

ID -- TagName     -- TagValue

1  --  StringTag    --  string1

1  --  StringTag    --  string2

2  --  NumberTag --  123

2  --  NumberTag --  45

FIRST or LAST only display first or last TagValue, how can I achieve this in datacube:

ID -- StringTag              -- NumberTag

1  --   string1, string2    --

2  --                               --   123, 45

2、Sadaf Behbahani

I have the same problem as the last post and I would like to know is there any ways to have an out put like mentioned above?

Date -- Category – Icon

1      --     cat1     --  ic1

1      --     cat2     --  ic2

 and in my cross tab i need to have something like this:

Date -- Category  -- Icon

1       -- cat1,cat2  -- ic1,ic2

【回答】

To Tamnguyen:

交叉表控件没有这种汇总运算,不能直接使用这种源数据,可将源数据转为如下格式的 dataset,再用交叉表控件呈现:

ID

TagName

values

1

StringTag

string1,string2

2

NumberTag

123,45


用报表脚本描述不太方便,这里可以用 SPL 写一下:


A

1

$select ID,TagName,TagValue from tb1

2

=A1.group(ID,TagName;   ~.(TagValue).concat@c():values)


BIRT 可通过 jdbc 访问集算器,类似例子可参考【BIRT 调用 SPL 脚本

To Sadaf Behbahani:

类似地,也可用 SPL 将源数据直接转为需要的二维表,再用 table 控件呈现:


A

1

$select Date,Category,Icon from tb2

2

=A1.group(Date; ~.(Category).concat@c():Cats,~.(Icon).string():Icons)


这里的“~”表示分组后的每组记录,“(Category)”表示取字段形成的集合,函数 concat@c 可将集合成员拼为字符串,分隔符是逗号。