SQL 表达式字段释疑

水晶报表有个【SQL 表达式字段】
有的朋友在使用的时候,直接在里面写了个SQL语句,结果提示报错。
其实【SQL 表达式字段】有点类似与我们 SQL 语句里的别名字段
如 Select f1,f2,f3,(f4+f5) as xx from table1
那么【SQL 表达式字段】可以是f1,f2,f3或f4+f5
【SQL 表达式字段】不是一个SQL语句,而是SQL语句的一部分。SQL表达式仅支持当前数据库所支持的 SQL 语法,不能使用【公式】函数。
而且不是SQL语法支持就能用的,比如说部分聚合函数Count,Sum等,不能使用。
假设当前报表使用的SQL语句是 Select * from table1,那么你要保证 Select *, (【SQL 表达式字段】里面的内容) from table1执行成功。

特别注意:操作时,最好点击字段进行操作,不要自己手写,防止写错!

附图1:如何查看报表当前使用的SQL语句

附图2:一个标准的SQL表达式

 


以下为官方解释:

 

适时使用 【SQL 表达式字段】
【SQL 表达式字段】与【公式】类似,但 【SQL 表达式字段】是以结构化查询语言 (SQL) 编写的。
【SQL 表达式字段】可用于优化报表性能,原因在于 【SQL 表达式字段】执行的任务通常是在数据库服务器上执行的,
与常规【公式】不同,常规【公式】有时在本地计算机上执行。

因为 Crystal Reports 有自己的【公式】语言,而且该语言比标准 SQL 的功能强大得多,所以不要一味只使用 【SQL 表达式字段】。
Crystal 语法和 Basic 语法均允许您用一些方法来改进和磨砺【公式】,而有些方法对于 SQL 很困难或根本无法实现。
但是,在某些情况下,创建和使用 【SQL 表达式字段】字段可以提高报表的处理速度。

【SQL 表达式字段】字段的主要用途
为了维持最佳的报表处理速度,请避免在记录选定【公式】中使用【公式】(不管是 Crystal 语法还是 Basic 语法)。
而应该用等效的 【SQL 表达式字段】字段替换原【公式】,然后将 【SQL 表达式字段】字段合并到记录选定【公式】中。
这样做将大大提高您的记录选定被下推到服务器的机会。

另外,应避免对【公式】字段进行排序、分组或总计(不管是 Crystal 语法还是 Basic 语法)。
而应该用等效的 【SQL 表达式字段】字段替换原【公式】字段,然后在 【SQL 表达式字段】字段上进行排序、分组或总计。
这样做也将大大提高在服务器上执行处理的机会。

最后,如果数据库支持 Case 逻辑,并且报表需要摘要 If-Then-Else 【公式】计算,请用 【SQL 表达式字段】字段替换该【公式】。
在此类情况下,【SQL 表达式字段】字段使 Crystal Reports 可以在服务器上执行报表的分组。

posted @ 2008-11-09 11:23  阿泰  阅读(4780)  评论(3编辑  收藏  举报