我试图创建报告,在此基础上的SQL查询11水晶报表

SELECT *,点击 FROM(表)OM,(表)OL(表)C点击 WHERE OM.ORDER = OL.ORDER结果 和OM.COMPANY = C.COMPANY结果 AND(EXISTS(SELECT *点击 FROM(表)OSD(表)OSDD结果             WHERE OSD.ORDER = OL.ORDER结果 和OSD.LINE = OL.LINE结果 和OSD.REVISION = OL.REVISION结果 和OSD.DIM = OSDD.DIM结果 AND OSDD.SHAPE = OL.SHAPE))结果

我想开始是通过前两个表创建主报告和创造使用“EXISTS”查询的部分子报表,并链接回主报告的最佳方式。搜索结果我的详细信息部分包含从主报告和报表两个数据。我得到正确的结果回来当报表返回一个值,但我希望能够抑制主报告的细节部分,如果报表是空的,但我不能找到一种方法来引用报表中的任何选择公式。搜索结果我很愿意听取建议,如果有更好的方法来模拟这个查询也是如此。

有帮助吗?

解决方案

我不知道,如果你使用的是什么类型的数据库,但我相信,你大概可以使用这样的:

select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
inner join (table) OSD on OSD.ORDER = OL.ORDER 
    and OSD.LINE = OL.LINE 
    and OSD.REVISION = OL.REVISION
    and OSD.DIM = OSDD.DIM
inner join (table) OSDD on OSDD.SHAPE = OL.SHAPE

这是把我的头顶部,没有测试过,但这个想法是,它会显示所有的从OM,OL,C,OSD和OSDD记录在那里找到的匹配。因为你不使用左连接上OSD或OSDD你不应该有任何空行。

不过,你可以随时更改那些左外连接,如:

select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
left outer join (table) OSD on OSD.ORDER = OL.ORDER 
    and OSD.LINE = OL.LINE 
    and OSD.REVISION = OL.REVISION
    and OSD.DIM = OSDD.DIM
left outer join (table) OSDD on OSDD.SHAPE = OL.SHAPE

这会给你从OM,OL,和C都行,只有从OSD和OSDD它找到了一个匹配的行。然后你有多种选择,以抑制行,你不希望看到如使用他抑制配方中的部分专家的建议rexem

希望这有助于。

其他提示

有没有理由使用报表,如果你不希望看到任何数据,其中子报表为空。你过分复杂的报告。

如果您仍想做到这一点,禁止属性允许表达式。你可能会需要使用一个globalvar变量,设置变量基础上的报表,但我怀疑这会之前所显示的行来设置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top