在Crystal reports中实现SQL查询

在Crystal reports中实现SQL查询,sql,crystal-reports,oracle10g,Sql,Crystal Reports,Oracle10g,我想在Crystal Reports中生成一个报告,我对它非常陌生。我不知道如何操纵Crystal报告。我做了一个SQL查询,它提供了Oracle(10g)数据库的所有必需输出。但我需要将其转换为在Crystal Reports中使用 这是SQL查询,它为我提供了所需的输出: SELECT ins.ins_name,ins.ins,crdi.ct, crdi.bn, sum(DECODE(cardh.crd_st, 'PO', 1, 0)) POCount, sum(D

我想在Crystal Reports中生成一个报告,我对它非常陌生。我不知道如何操纵Crystal报告。我做了一个SQL查询,它提供了Oracle(10g)数据库的所有必需输出。但我需要将其转换为在Crystal Reports中使用

这是SQL查询,它为我提供了所需的输出:

SELECT 
    ins.ins_name,ins.ins,crdi.ct, crdi.bn,
    sum(DECODE(cardh.crd_st, 'PO', 1, 0)) POCount,
    sum(DECODE(cardh.crd_st, 'CN', 1, 0)) CNCount
FROM
    crdh, crdi, ins
WHERE 
    crdh.crd_st IN ('PO','CN') 
    and crdi.bn in (select unique bn from crdh)
    and crdh.bn = crdi.bn 
    and crdi.ins = ins.ins
GROUP BY 
    ins.ins, crdi.bn, ins.ins_name, crdi.ct
ORDER BY 
    ins.ins, crdi.bn;
当我实现上述查询时,我得到了以下错误:

a) 当我将上述查询放入数据库| Show SQL query…,查询的以下部分将被删除:

sum(DECODE(cardh.crd_st, 'PO', 1, 0)) POCount,
sum(DECODE(cardh.crd_st, 'CN', 1, 0)) CNCount
GROUP BY ins.ins, crdi.bn, ins.ins_name,crdi.ct
b) 当我为ins.ins添加组时,Crystal reports在报告中添加了大量空格

c) 如何在crystal报告中打印POCount和CNCount的值

为了更好地理解,我还添加了输出的屏幕截图

一个INS可以有多个BN,一个BN可以有多个CNs和POs。就像INS3有两个BN('123456','789012'),在BN'123456'中有3个POs和0个CN,但在BN'789012'中只有一个CN。我希望这对回答者有所帮助

请帮助我获得与上述查询输出相同的报告。提前谢谢

我得到了以下结果:


不要在查询中实现sum,而是在crystal中实现。所以像这样更改查询

SELECT ins.ins_name,ins.ins,crdi.ct, crdi.bn,
      cardh.crd_st,cardh.crd_st
FROM crdh, crdi, ins
连接到报表时,在crystal report
命令中添加上述查询

现在让您的报告以所需格式显示

  • 创建一个公式
    @PO

    如果cardh.crd\u st='PO'
    那么1
    其他0

  • CN

    if cardh.crd\u st='CN'
    那么1
    其他0

  • 将以上公式详细放置

  • 通过
    ins.ins\u name

  • 将所有列放在组页脚中,同时计算公式
    @po
    CN
  • 当您在查询中使用where条件以在CR中获取该条件时,请在
    Select Expert-->Record Selection Formula
    中实现where子句,如果您感到不舒服,请尝试在查询本身中实现where子句

  • 让我知道进展情况。

    在这种情况下,在
    ins.ins\u name
    group之后再添加两组
    ins
    BO
    ,并在所需的组中进行汇总,但不要忘了详细放置Po和CN公式并进行计算summary@Siva-我遵循了你在答复中提到的步骤,几乎达到了我的目标目的地Crystal report显示计数的唯一问题是每行增加一个。但我需要一行CN和PO的最终计数。我将po和CN公式的总和进行了详细说明,并通过crdi.bn创建了一个组。请帮帮我。@Siva-你所说的“获取摘要”是什么意思?通过使用公式cn和po的详细信息,你将获得1和0,因此在组或报表页脚和Suppress details部分中获取该列的摘要隐藏屏幕截图中显示的部分,并将所有字段放置在页脚部分。现在,你将只看到一行