nc5自定义查询用户手册new内容摘要:

拉框数据进行保存。 查询模型设计 查询模型设计包括参数定义、 SQL 设计(含交叉定义)、 SQL 整理、数据加工、穿透规则等几部分,其中穿透规则描述的是本查询与外部查询的通信关系,其余部分都用于描述查询内部的属性。 查询设计态和运行态的基本流程如下图所示: 图 179 查询模型流程 (1) 参数控制 参数是查询模型中代表动态信息的元素。 在 SQL 设计、 SQL 整理和数据加工中,均可以 根据参数的不同,对查询的定义和执行进行调整。 如果创建某个参数的作用是根据其取值的不同改变 WHERE 条件的设置,则这类参数成为过滤型参数,这是最常用的参数功能。 参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。 数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“ @”分隔的枚举值,或者是一个单字段的查询 SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。 图 1710 参数定义 参数引用:参数可在 SQL 设计的筛选条件页签引用,也可在 SQL 整理 或数据加工的嵌入代码中利用编码向导引用。 图 1711 参数引用 参数设置:运行态要求用户首先对参数进行设置,这与查询模板的使用类似。 当报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。 图 1712 参数设置 (2) SQL 设计 SQL 设计包括向导设计和手工设计两种方式。 无论采用哪种,在完成设计时系统均会对 SQL 进行合法性校验,如未通过校验则不能保存设计。 作为向导设计的一个重要组成环节,有必要先介绍一下数据字典。  数据字典 前面已经提到,查询对象的属性中包含数据源信息,在设计查询的时候 需要加载相应数据源的数据字典。 NC 的数据库以 DDC 作为数据字典,但非 NC的数据库则没有 DDC。 系统会根据执行数据源是 NC、 IUFO 或其它数据库三种情况分别加载不同的数据字典,而且这一机制已经预留了扩展的接口,从而可以面向各种类型的数据库执行取数功能。 关于数据字典的生成有多种做法,可以参考 DDC 的专门文档。 查询引擎中用到的数据字典都以一棵对象树的形式存在,树节点包括目录、表、视图、字段、外键等信息,通过双击对象节点可以协助录入 SQL 语句的成分。  向导设计 向导设计参考典型 SQL 的构成规则,充分利用数据字典的 功能,引导用户一步步完成 SQL 的设计,因此是推荐使用的方式。 它由以下六个环节构成,其中最后一步“交叉属性”超出了 SQL 的涵义,在后面的章节中进行专门介绍。  表定义:即 SQL 语句中的 from 部分,可以利用数据字典选择库里的数据表,也可以选择查询对象,从而实现查询的集成(基于查询结果定义新的查询)。 图 1713 表定义 图 1714 数据表与临时表  连接定义:即 SQL 语句中的 join 部分(表间连接关系),支持单键连接和多键连接两种模式。 图 1715 连接定义  字段定义:即 SQL 语句中的 select 部分,可以定义任何 SQLSERVER 语法支持的查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字母、数字、下划线组成的字符串,且不能使用 SQL 保留字)。 如果使用了聚集函数,则由系统自动完成 group by 部分。 图 1716 字段定义 图 1716 表达式生成器  字段表达式定义: 下面作些特殊函数的用法说明。 如其它函数: CASE WHEN 的用法 如某查询定义中,当科目表中的字段“余额方向”为 1 时,需将查询中的字段“余额方向名称”(如字段别名为 name)值显示为 ”借 ”,否则为 ”贷 ”。 则字段表达式为 case when =1 then 39。 借 39。 else 39。 贷 39。 end 操作方法:双击“其它函数”中的 CASE WHEN,则在字段表达式中生成: case when then else end, 然后在字段表达式的编辑框中继续手工编辑成完整表达式: case when =1 then 39。 借 39。 else 39。 贷 39。 end,然后按“确定”。 图 1717 CASE WHEN 的用法 1 图 1717 CASE WHEN 的用法 2  筛选条件定义:即 SQL 语句中的 where 部分,可定义确定条件和待定条件,后者可以通过双击右操作数编辑框弹出参数界面并作引用。 图 1718 筛选条件定义  排序字段定义:即 SQL语句中的 order by 部分。 图 1717 排序字段定义  数据交叉属性:交叉是一种常用的多维数据分析手段,详见后文。  手工设计 手工设计是支持自由 SQL 的方式,由于复杂 SQL 在解析、适配、执行等方面的不稳定性较大,因此不推荐普通用户使用。 手工设计包括:  SQL 录入:用户可以在数据字典的辅助下录入 SQL 语句,要求遵循SQLSERVER 语法。 图 1720 SQL录入  字段显示名设置:系统通过对用户录入 SQL 的解析获得字段信息,并向用户提供输入字段显示名的机会,显示名的默认值与查询字段的物理名相同。 图 1721 字段显示名设置 (3)数据交叉 数据交叉包括第一类 (投影 )交叉和第二类 (旋转 )交叉两种类型。 两类交叉的差别在于:第一类交叉属于查询行为,适用于行列设置都已在表样中固定的报表,其交叉结果严格遵循表样格式,其行列结构不会受查询数 据的影响;第二类交叉属于数据加工行为,其交叉后的行列结构在查询出数据之前不可预料,多用于完全真实地对原始数据进行动态处理。  第一类(投影)交叉 假定有一个查询 SQL,其查询结果是单行单列的汇总值,另外还有两组WHERE 条件的序列,分别为横向序列( WhereX WhereX„„、 WhereXn)和纵向序列( WhereY WhereY„„、 WhereYn),则数据矩阵 A( aij)对应的结果集成为投影交叉, aij 是 WhereXi 和 WhereYj 同时作用在上述 SQL上获得的结果。 比如,某查询用于查出公 司和部门下的人数,原始 SQL 为: select , , , , from ic_general_b left outer join bd_invbasdoc on = left outer join bd_invcl on = group by ,classname 查出的结果如下图所示: 图 1722 原始数据(无交叉) 现在把查询字段中只保留实收数 一项,然后进行如下的投影交叉设置: 图 1723 投影交叉设置 则交叉后的结果如下图所 示: 图 1724 投影交叉结果  第二类(旋转)交叉 旋转交叉 用于 显示表中某 几 个字段 (称为交叉值字段) 的 统计 值,并将 其 分组放置在查询结果中,一组列在数据表的左侧 (称为交叉行字段) ,一组列(称为交叉列字段)旋转到 数据表的上部 成为列表头,统计值则放在对应的交叉单元。 关于旋转交叉的更细节的内容,请参考《交叉表使用说明》。 对于投影交叉中的例子,假定进行如下的旋转交叉设置(其中交叉砝码表示交叉值字段的位置,它只能出现在交叉行字段或交叉列字段当中): 图 1725 旋转交叉设置 则交叉后的结果如下图所示: 图 1726 旋转交叉结果 (4)代码嵌入 代码嵌入包括 SQL整理、数据加工、数据穿透等三种查询对象使用方式。  SQL整理 SQL 整理是指在 SQL 查询之前,对 SQL 所作的调整。 通常会根据参数的不同,对查询的表、字段或条件等信息进行增补或修改。 SQL 整理的具体内容由内嵌的代码片段描述(这与后面将介绍的数据加工和穿透规则一样),代码的录入可通过编码向导协助完成,尽管如此,这几种功能仍然推荐由高级实施人员或程序员使用。 图 1727 SQL整理代码 在图示的 SQL 整理代码中,当参数“ detail”取值为“ Y” 时,引擎会在本查询对象已完成的 SQL 设计基础上多查询一张表( bd_defdoc)和两个字段(档案编码、档案名称),从而获得更明细的查询信息;如果该参数取值不为“ Y”,则仍然按照 SQL设计的定义去执行查询。 以下简单介绍几种 SQL整理算法的编码向导使用方法:  追加查询表:参数为待追加的表物理名。 图 1728 追加表向导  追加连接条件:与追加表同时使用,参数为连接模式、追加表物理名和追加的表间连接条件。 图 1729 追加连接条件向导  追加查询字段:与追加表同时使用,参数为追加字段的表达式、显示名和别名。 图 1730 追加字段向导  按参数追加条件:根据参数取值的不同追加不同的筛选条件,参数为参数名和筛选字段。 图 1731 按参数追加条件向导  数据加工 数据加工是指某个(或某几个)查询结果集在经过一系列加工算法的变换后得到另一个结果集,而后者通常是业务上要求的展现结果。 相关的算法又称为加工滤镜,滤镜通常支持输入多个结果集和输出一个结果集,并可以嵌套使用。 数据加工与 SQL 整理的区别在于:前者在 SQL 查询之后进行,作用的对象是结果集;后者在查询之前进行,作用的对象是 SQL定义。 在数据加工的编码向导中, 提供了多种实用加工滤镜。 图示的数据加工代码把主键分别为“ user1”和“ user2”的两个结果集按照 pk_corp 字段为键进行了左外连接,并在连接结果中保留了“ user_name1”、“ pk_corp ”、“ user_name2”三列。 图 1732 数据加工代码 以下简单介绍几种数据加工算法的编码向导使用方法: 由查询获得结果集:根据查询 ID 和参数获得查询结果集,如果没有参数或不需要设置参数,则参数变量可取 null。 图 1733 获得结果集向导 公式设置:参数为公式列名、返回值数据类型和公式,如果公式 列名不存在则新增一列,否则将该列的内容更新为公式返回值。 图 1734 公式编辑。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。