【问题标题】:Implement a SQL query in Crystal reports在 Crystal 报表中实现 SQL 查询
【发布时间】:2014-04-11 21:39:24
【问题描述】:

我想在 Crystal Reports 中生成一个报告,但我对它很陌生。我不知道如何操作水晶报表。我做了一个 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) 当我将上述查询放入Database|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 报表会在报表中添加很多空格。

c) 如何在水晶报表中打印 POCount 和 CNCount 的值?

我还添加了输出的屏幕截图以便更好地理解。

一个 INS 可以有多个 BN,一个 BN 可以有多个 CN 和 PO。就像 INS 3 有两个 BN ('123456','789012') 并且 BN '123456' 中有 3 个 PO 和 0 个 CN,但 BN '789012' 中只有一个 CN。 我希望这有帮助回复。

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

我得到了以下结果:

【问题讨论】:

    标签: sql crystal-reports oracle10g


    【解决方案1】:

    不要在查询中实现 sum 而是在水晶中实现它。所以像这样改变查询。

    SELECT ins.ins_name,ins.ins,crdi.ct, crdi.bn,
          cardh.crd_st,cardh.crd_st
    FROM crdh, crdi, ins
    

    当你连接到水晶报表command时添加上面的查询。

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

    1. 创建公式@PO

      if cardh.crd_st= 'PO' then 1 else 0

    2. CN创建公式

      if cardh.crd_st='CN' then 1 else 0

    3. 上式详解

    4. 通过ins.ins_name创建群组

    5. 将所有列放在组页脚中,同时对公式@poCN 求和
    6. 当您在查询中使用 where 条件来获取 CR 中的条件时。在Select Expert ---> Record Selection Formula 中实现你的 where 子句,如果你不方便,那么尝试在查询本身中实现 ​​where 子句。

    告诉我进展如何。

    【讨论】:

    • 在这种情况下,ins.ins_name 组之后添加另外 2 个组 INSBO 并在所需组中获取摘要,但不要忘记详细放置 Po 和 CN 公式和总结
    • @Siva- 我按照您在回复中提到的步骤进行操作,我几乎到达了目的地,水晶报表显示的唯一问题是每行中的计数增加一个。但我需要在一行中最终计算 CN 和 PO。我把公式 po 和 CN 的和详细地放在了 crdi.bn 上创建了一个组。请帮帮我。
    • @Siva- 你说的夏天是什么意思?
    • 通过使用公式 cn 和 po 详细信息,您将获得 1 和 0,因此请将该列的摘要分组或报告页脚并隐藏详细信息部分
    • 隐藏屏幕截图中显示的部分并将所有字段放在页脚部分..现在你只会看到一行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多