Crystal Reports相当于'WHERE'

时间:2012-02-24 22:51:32

标签: sql crystal-reports

我熟悉SQL但不熟悉Crystal Reports。我正在尝试处理包含5列的导入数据集:

id           deathDate           giftDate        giftAmount       Dead
123           2008-01-06          2011-09-08       25.00          TRUE
456           2009-06-08          2011-10-13       10.00          TRUE
789              0                2011-12-04       50.00          FALSE
...

我正在尝试做一个子查询,但无法弄清楚SQL中WHERE的CR等价物。我想按照以下方式做点什么:

SELECT count(id) from tab1 where dead=TRUE

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

正如Conrad和dotjoe所观察到的,sql where子句的Crystal等价物是Select Expert - 您应该可以在Report菜单中找到它。

如果您需要在详细信息部分中包含true和false Dead记录,但只想要Dead为真的记录的总数,则最简单的方法是设置一个公式项目。为此:

  • 右键单击Field Explorer中的Formula Fields选项,然后选择New ...。
  • 输入合适的公式字段名称,例如DeadCount
  • 在公式编辑器中,输入如下公式(假设Dead是字符串):

    If {tab1.Dead} = 'TRUE' then 1

  • 使用x-2按钮(或Alt-C)检查公式是否有任何错误,然后按“保存并关闭”按钮退出公式编辑器。

  • 将新公式字段从“字段资源管理器”拖放到报表中的任意位置。
  • 右键点击刚刚添加到报告中的公式字段,然后选择插入>摘要......来自菜单。
  • 在“插入摘要”对话框中,将“摘要”操作指定为“总和”,将“摘要”位置指定为“总计”(报表页脚),然后单击“确定”。标记为Sum of @DeadCount的摘要字段应显示在报表页脚中。 (您现在应该从报表设计区域中放置未汇总的公式字段。)

此技术基本类似于在SQL查询中包含求和的案例值 - 类似于:select sum(case when Dead = 'TRUE' then 1 end) as DeadCount from tab1

答案 1 :(得分:1)

将此添加到记录选择公式...

{datasetname.Dead} = true 
//note: I'm not sure what data type that is but CR uses bool for bit and XSD bool 

然后将摘要字段添加到执行计数(id)的报表页脚。

或者,如果您需要显示数据集并且只需要子查询,则可以使用称为“Running Total”字段的内容。在这里,您可以执行count(id)并将where子句添加到必要的公式中。