在 Crystal 中左连接右对齐字段与左对齐字段



我有一个报告,我需要在其中连接两个表,但是它们之间的字段定义不同,并且我无法更改表架构,因为它的JDEdwards。 所以我有一个字段为 30 个字符左对齐,另一个字段为 12 个字符右对齐。 这些值将始终少于 12 个字符。 所以问题不在于尺寸的差异,而在于对齐/填充。 不过我必须做一个左接。 现在,报表只是在数据选择中进行比较并导致内部联接。 但是我需要将其更改为左连接以停止丢失行。 有什么办法吗?

发生的情况是,当我创建链接以在 Database Expert 中进行左连接时,我最终从连接表中获取的数据全部空白,因为它由于填充差异而找不到任何行。

由于您只需要联接表中的一个值,因此您可以创建一个 SQL 表达式来为您获取该值,而无需通过数据库专家向报表本身添加任何表。您将能够使用任何有效的SQL,因此您可以做任何您想做的事情,而不受Crystal的限制。

例如,假设您的报表包含具有 30 个字符左对齐外键的Table_A,并且您尝试加入 Table_B 以获取某个字段,但该键是 12 个字符的右对齐。Oracle 中的一个简单的示例是这样的:

case when "Table_A"."ForeignKey" is null then null
else
 (select Table_B.SomeFieldYouWant
  from Table_B
  where rpad(Table_B.PrimaryKey,30,'0')="Table_A"."ForeignKey"
end

请务必注意,在 SQL 表达式中,用双引号引用的任何字段都意味着它引用回报表中的表/字段,而不是子查询中的新表;这就是将子查询关联回报表数据的方式。

最新更新