如何在 BIRT 中用另一列结果替换空列结果

How to replace a column result if null with another column result in BIRT

对于使用 Birt 中的表达式计算列的帮助,我将不胜感激。

我有两列给出结果,一列给出电子邮件地址,一列给出联系电话:电话、手机..

当电子邮件结果为空时,联系电话列显示一个数字,这些是与 sql 中的 table 不同的通信方式。

我想做的是为电子邮件地址和电话号码创建一个新的计算列,当 emailaddress 为 null 时替换为 contactnumber = contact,当 contactnumber 为 null 时替换为 emailaddress。

我在网上看了几个类似的问题,发现当你点击验证时,将下面的脚本输入到 birt 表达式生成器中是被接受的,但它没有在我使用的 erp 软件中加载报告。

表达式本身是否正确?

if(row["destination"] == null){
row["contact"];
}
else if(row["contactnumber"] == null){
row["contact"];
}
else{
return true;
}

亲切的问候,

斯图尔特

不,这是不正确的(尽管在句法上有效)。

首先我们得到的是一个表达式,而不是一个函数。 所以不应该有 return 语句。

显然 true 不可能是对的。其他值(可能)是字符串,因此这也应该是字符串。

我不太确定你到底想达到什么目的。 也许您正在寻找类似 SQL 中的 COALESCE 或 Oracle SQL 中的 NVL 之类的东西?

我想你创建了一个 JS 函数,用 JSfiddle 左右测试它,然后把它放在初始化脚本中并在表达式中调用它。

通过使用以下 Javascript 作为 Birt 中的计算列,这会将一列(如果为空)替换为另一列值。

if(row["destination"] == null){
row["contactnumber"];
} 
else { 
row["destination"]; }