Crystal reports 删除一组Crystal reports中的重复结果

Crystal reports 删除一组Crystal reports中的重复结果,crystal-reports,Crystal Reports,My SQL存储过程返回以下结果: ID District Decision ----------------------- 17 First Approved 17 First Partially approved 17 First Pending 17 Second Approved 17 Second Partially approved 17 Second Pending 我的Crystal报告中也产生了同样的结果。地区和决策列

My SQL存储过程返回以下结果:

ID  District  Decision
-----------------------
17  First     Approved
17  First     Partially approved
17  First     Pending
17  Second    Approved
17  Second    Partially approved
17  Second    Pending
我的Crystal报告中也产生了同样的结果。地区和决策列没有任何关系。它们都只与ID(requestId)相关。由于加入了3个表,我得到了每个地区的重复结果。

到目前为止,我能够按ID对记录进行分组并抑制重复的行。这样做之后,我的报告中有以下内容:

ID  District  Decision
-----------------------
17  First     Approved
              Partially approved
              Pending
    Second    Approved
              Partially approved
              Pending
到目前为止还不错,但我最终想要得到的是如下所示:

ID  District  Decision
----------------------
17  First     Approved
    Second    Partially approved
              Pending
我希望删除所有空格(在抑制重复后留下),并在ID组中只留下不同的记录


我想在Crystal Reports中完成所有工作,这就是为什么我排除了SQL server中的变通方法

如果编辑SQL不是一个选项,那么您就走上了正确的道路。简而言之,您需要:

  • 编写一个公式(
    @YourFormula
    ),如果上一条记录具有相同的ID和地区,则该公式的计算结果为True。(提示:使用
    PREVIOUS()
    函数。)
  • 设置详细信息部分中每个字段的格式,以便将抑制公式设置为
    @YourFormula
  • 有关详细信息,请在节编辑器中选中“抑制空白节”

  • 这一切都取决于您的记录是否正确分组。如果它们有时出现错误,您可能需要编辑当前的SQL。

    F.Y.I.您可以在Crystal Reports中编写自己的SQL命令。只需进入数据库专家,选择您的连接,然后选择Add命令。感谢@4444的回复。有点不对。我遵循了你解释的步骤,但我得到了相同的结果。我使用的公式是:{usp_storedProcedure;1.ID}=previous({usp_storedProcedure;1.ID})和{usp_storedProcedure;1.District}=previous({usp_storedProcedure;1.District})如果不看/不懂你的报告,很难诊断这个问题。您反对在Crystal中编写自定义SQL命令吗?这会让你更好地控制报告内容。抱歉@4444回复太晚。我暂时解决了在存储过程中使用游标的问题,但如果您能给我一些关于如何在Crystal中使用自定义SQL命令的清晰示例,我将非常高兴!当然-基本上,您添加SQL命令的方式就像它是数据库中的另一个表一样。在通常选择新表的地方,单击Add命令并在那里编写SQL查询。