大家好,
我是业务对象的新手。我正在编写一个报表,其中业务层对象是从两个表的列(Say A和B)派生的。表B左外连接表A.我在表B的一列上创建了一个提示。现在,当我在Web Intelligence富客户端中运行查询时,提示将被添加到查询的where条件并禁止表A中可用但不在表B中的记录。请查看下面查询脚本中可用的示例查询。
<code>
Select
A.column1,
B.column2
sum(b.measure)
from TABLE_A LEFT OUTER JOIN TABLE_B ON TABLE_A.ID=TABLE_B.ID
where B.column2=@Prompt()
</code>
我想呈现表A中的所有记录,而不管表B中的数据。有没有办法实现它。我正在使用Business Objects 4.0,信息设计工具和Web智能丰富的客户端来生成报告。
答案 0 :(得分:0)
执行所需操作的SQL将是:
select
A.column1,
B.column2
sum(b.measure)
from
TABLE_A
LEFT OUTER JOIN TABLE_B
ON TABLE_A.ID=TABLE_B.ID
AND B.column2=@Prompt()
不幸的是,目前不支持在查询的FROM子句中动态放置@Prompt(),不能创建派生表或捏造A和B之间的连接。
如果这是一次性需求,您可以在报告中修改SQL,但这不是一个持久的解决方案。
根据实际查询的复杂性和表中的数据量,您可以通过多个查询实现所需的结果。从TABLE_B创建一个包含ID
和COLUMN1
的查询,并从TABLE_B创建另一个包含ID
,COLUMN2
和MEASURE
的查询。第二个查询将包含COLUMN2
上的@Prompt()。
在报告中,合并ID
上的两个查询。您可能必须为COLUMN1
和COLUMN2
创建新变量作为相应ID
对象的属性,但完成后,结果应该是您想要的。