首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >晶体中左连接右对齐场与左对齐场

晶体中左连接右对齐场与左对齐场
EN

Stack Overflow用户
提问于 2014-12-04 07:12:41
回答 1查看 147关注 0票数 1

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

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

EN

回答 1

Stack Overflow用户

发布于 2014-12-06 23:26:13

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

例如,假设您的报表由具有左对齐30个字符的外键的Table_A组成,并且您试图连接到Table_B以获取某个字段,但该键是12个字符右对齐。在Oracle中的一个简单示例如下所示:

代码语言:javascript
复制
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表达式中,任何用双引号引用的字段都意味着它引用的是报表中的表/字段,而不是子查询中的新表;这就是如何将子查询与报表的数据联系起来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27283436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档