NC5自定义查询用户手册new 联系客服

发布时间 : 星期三 文章NC5自定义查询用户手册new更新完毕开始阅读

图17-17 CASE WHEN的用法1

图17-17 CASE WHEN的用法2

?

筛选条件定义:即SQL语句中的where部分,可定义确定条件和待定条件,后者可以通过双击右操作数编辑框弹出参数界面并作引用。

?

图17-18筛选条件定义

排序字段定义:即SQL语句中的order by部分。

图17-17排序字段定义

? 数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。 手工设计

手工设计是支持自由SQL的方式,由于复杂SQL在解析、适配、执行等方面的不稳定性较大,因此不推荐普通用户使用。手工设计包括: ? SQL录入:用户可以在数据字典的辅助下录入SQL语句,要求遵循

SQLSERVER语法。

?

?

图17-20 SQL录入

字段显示名设置:系统通过对用户录入SQL的解析获得字段信息,并向用户提供输入字段显示名的机会,显示名的默认值与查询字段的物理名相同。

图17-21字段显示名设置

(3)数据交叉

数据交叉包括第一类(投影)交叉和第二类(旋转)交叉两种类型。两类交叉的差别在于:第一类交叉属于查询行为,适用于行列设置都已在表样中固定的报表,其交叉结果严格遵循表样格式,其行列结构不会受查询数据的影响;第二类交叉属于数据加工行为,其交叉后的行列结构在查询出数据之前不可预料,多用于完全真实地对原始数据进行动态处理。 ? 第一类(投影)交叉

假定有一个查询SQL,其查询结果是单行单列的汇总值,另外还有两组WHERE条件的序列,分别为横向序列(WhereX1、WhereX2、……、WhereXn)和纵向序列(WhereY1、WhereY2、……、WhereYn),则数据矩阵A(aij)对应的结果集成为投影交叉,aij是WhereXi和WhereYj同时作用在上述SQL上获得的结果。

比如,某查询用于查出公司和部门下的人数,原始SQL为:

select bd_invbasdoc.invcode , bd_invbasdoc.invname, bd_invcl.invclasscode, bd_invcl.invclassname, ic_general_b.ninnum from ic_general_b left outer join bd_invbasdoc on ic_general_b.cinvbasid = bd_invbasdoc.pk_invbasdoc left outer join bd_invcl on bd_invbasdoc.pk_invcl = bd_invcl.pk_invcl group by bd_invbasdoc.invcode,bd_invbasdoc.invname,bd_invcl.invclasscode,bd_invcl.invclassname

查出的结果如下图所示:

图17-22原始数据(无交叉)

现在把查询字段中只保留实收数ic_general_b.ninnum一项,然后进行如下的投影交叉设置:

图17-23投影交叉设置

则交叉后的结果如下图所示:

图17-24投影交叉结果

?

第二类(旋转)交叉

旋转交叉用于显示表中某几个字段(称为交叉值字段)的统计值,并将其分组放置在查询结果中,一组列在数据表的左侧(称为交叉行字段),一组列(称为交叉列字段)旋转到数据表的上部成为列表头,统计值则放在对应的交叉单元。

关于旋转交叉的更细节的内容,请参考《交叉表使用说明》。

对于投影交叉中的例子,假定进行如下的旋转交叉设置(其中交叉砝码表示交叉值字段的位置,它只能出现在交叉行字段或交叉列字段当中):