一种通过用户配置生成子查询的方法与装置制造方法及图纸

技术编号:9794600 阅读:67 留言:0更新日期:2014-03-21 19:21
本发明专利技术公开了一种通过用户配置生成子查询的方法,所述的通过用户配置生成子查询的方法,该方法通过界面配置可生成对数据库表进行按条件分列处理的视图或子查询,生成的视图或子查询可以作为报表开发步骤“选择报表所需数据库表”时的特殊待选数据库表,故该方法可以作为报表开发系统的前置处理装置,避免了开发人员去处理复杂的查询和数据整理,易于修改和维护。

【技术实现步骤摘要】
一种通过用户配置生成子查询的方法与装置
本专利技术涉及一种通过用户配置生成子查询方法,当报表开发需要对数据库表某一列数据按条件进行分列展示时,此方法可提供中间层的视图或子查询。
技术介绍
现有技术中,通过选择报表所需数据库表,并设置数据库表的连接关系以及其他过滤条件,从而选择字段用于报表展示。当报表要求对数据库表中的某一列数据信息进行按条件分列展示时,需要开发人员在后台开发完成查询和处理数据,增加了报表开发的复杂度。
技术实现思路
为了克服现有技术中的上述不足,本专利技术提出了一种通过用户配置生成子查询的方法,当数据库表某一列需要按条件进行分列报表展示时,按用户配置条件生成基于该数据库表的视图(子查询),将该视图(子查询)作为报表开发步骤“选择报表所需数据库表”的特殊待选数据库表。为实现上述专利技术目的,本专利技术采用的技术方案如下:一种通过用户配置生成子查询的方法,其特征在于:步骤201,开始;步骤202,选择待分列字段所在数据库表;步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表;如果判断为否,继续执行步骤204;步骤204,选择判断字段所在数据库表;步骤205,设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件;步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式;步骤207,设置条件分列明细;步骤208,输出所生成的子查询;步骤209,结束。优选地,在步骤203中,如果判断的结果为是,则直接跳转执行步骤206。优选地,所述步骤202,选择待分列字段所在数据库表;步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表;如果判断为否,继续执行步骤204;步骤204,选择判断字段所在数据库表;进一步包括,步骤302,通过查询数据库数据字典,获取数据库系统业务表信息供选择;步骤303,获取选择设置信息;步骤304,判断选择的表是否待分列字段所在表;如果步骤304中判断结果为“是”,则执行步骤305,将选择的表标记为主表;如果步骤304中判断结果为“否”,则执行步骤306,将选择的表标记为子表;步骤307,判断是否选择完成;如果步骤307中判断结果为“否”,将会跳转到步骤302继续选择;如果步骤307中判断结果为“是”,则执行步骤308,判断是否有且只有一张主表;如果步骤308中判断结果为“是”,则执行步骤309,拼接生成子查询sql的from部分;如果步骤308中判断结果为“否”,则执行步骤310,删除选择的多余主表,跳转回步骤307;步骤311,判断是否含有子表;如果步骤311中判断结果为“是”,则执行步骤312。优选地,所述步骤205设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件,进一步包括步骤312,转到连接关系设置;步骤313,获取连接关系;步骤314,判断是否设置完成;如果步骤314中判断结果为“否”,则跳转回步骤312继续设置;如果步骤314中判断结果为“是”,则执行步骤315。优选地,所述步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式,进一步包括,步骤315,进行过滤条件设置;步骤316,获取过滤条件;步骤317,判断是否设置完成;如果步骤317中判断结果为“否”,则跳转回步骤315继续设置;如果步骤317中判断结果为“是”,则执行步骤318,生成视图(子查询)sql的where部分。优选地,所述步骤207,设置条件分列明细,进一步包括,步骤319,进行分列明细设置;步骤320,进行条件判断设置;步骤321,获取拆分列、输出列、输出默认值信息;步骤322,生成casewhen语句的then、else和endas部分;步骤323,获取条件列判断明细信息;步骤324,生成casewhen语句的when部分;步骤325,生成完整的casewhen条件判断sql片段;步骤326,判断是否设置完成;如果步骤326中判断结果为“否”,则跳转回步骤319继续设置;如果步骤326中判断结果为“是”,则执行步骤327,生成select部分。优选地,所述步骤208,输出所生成的子查询,进一步包括,步骤328,将上述select部分、from部分、where部分进行拼接子查询sql输出。优选地,如果步骤311中判断结果为“否”,直接跳转到步骤315,进行过滤条件设置;优选地,在所述步骤320,进行条件判断设置,进一步包括,每一次完整的条件判断设置都将生成步骤319中的一条明细数据。优选地,所述from部分为查询数据时所需的数据来源表信息;所述where部分为查询数据时的限制条件;所述select部分为最终所要展示的列信息。使用本专利技术的有益效果在于:该方法通过界面配置可生成对数据库表进行按条件分列处理的视图(子查询),可以作为报表开发系统的前置处理装置,避免了开发人员去处理复杂的查询和数据整理,易于修改和维护。附图说明下面根据附图和实施例对本专利技术作进一步详细说明。图1示出了根据本专利技术的一个实施例的生成报表的流程图;图2示出了根据本专利技术的一个实施例的生成子查询的流程图;图3示出了根据本专利技术的一个实施例的生成子查询的流程图。具体实施方式为更进一步阐述本专利技术为达成预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术提出的一种可配置的解析多值匹配字段的方法其具体实施方式、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。图1示出了根据本专利技术的一个实施例的生成报表的流程图,结合项目实例“贷款明细情况”报表进行流程描述,“贷款明细情况”报表用于将数据库表“贷款合同表”、“合同执行情况表”的信息进行展现,其中“贷款合同表”和“合同执行情况表”为一对多关系。“贷款合同表”包含合同编号、开始日期、终止日期、借款人、利率、币种等基本信息,“合同执行情况表”包含摘要(放本金、还本金等)、放款金额、还款金额、业务日期等信息。“贷款明细情况”报表展现的内容包括合同编号、摘要、放款金额、还款金额等。步骤101,开始。步骤102,通过数据字典提取业务表信息供展示,选择报表所需数据库表信息:在“贷款明细情况”报表项目实例中,选择“贷款合同表”和“合同执行情况表”。步骤103,设置表的连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件。连接关系将被转化为具体的sql语句片段用于提取过滤数据。在“贷款明细情况”报表项目实例中,可将连接关系设置为“合同执行情况表”的“合同主键”列等于“贷款合同表”的“主键”列。设置过滤条件,所述过滤条件为进一步筛选数据的表达式。过滤条件也将其转化成具体的sql语句片段用于过滤数据。在“贷款明细情况”报表项目实例中,过滤条件可以设置为“贷款合同表”的“币种”列等于人民币类型的常量值,从而非人民币类型的合同将被过滤掉。步骤104,选择所需字段用于报表展示。为方便选择,可以提供步骤102中所选择选择的数据库表的所有字段信息,供选择。未被选择的字段在将被隐藏处理。例如,在“贷款明细情况”报表项目实例中,选择了“合同编号”、“摘要”、“放款金额”、“还款金本文档来自技高网...
一种通过用户配置生成子查询的方法与装置

【技术保护点】
一种通过用户配置生成子查询的方法,其特征在于:步骤201,开始;步骤202,选择待分列字段所在数据库表;步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表;如果判断为否,继续执行步骤204;步骤204,选择判断字段所在数据库表;步骤205,设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件;步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式;步骤207,设置条件分列明细;步骤208,输出所生成的子查询;步骤209,结束。

【技术特征摘要】
1.一种通过用户配置生成子查询的方法,其特征在于:步骤201,开始;步骤202,选择待分列字段所在数据库表;步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表;如果判断为否,继续执行步骤204;步骤204,选择条件判断字段所在数据库表;步骤205,设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件;步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式;步骤207,设置条件分列明细;步骤208,输出所生成的子查询;步骤209,结束。2.如权利要求1所述的方法,其特征在于:在步骤203中,如果判断的结果为是,则直接跳转执行步骤206。3.如权利要求1或2所述的方法,其特征在于:所述步骤202,选择待分列字段所在数据库表;步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表;如果判断为否,继续执行步骤204;步骤204,选择条件判断字段所在数据库表;进一步包括,步骤302,通过查询数据库数据字典,获取数据库系统业务表信息供选择;步骤303,获取选择设置信息;步骤304,判断选择的表是否待分列字段所在表;如果步骤304中判断结果为“是”,则执行步骤305,将选择的表标记为主表;如果步骤304中判断结果为“否”,则执行步骤306,将选择的表标记为子表;步骤307,判断是否选择完成;如果步骤307中判断结果为“否”,将会跳转到步骤302继续选择;如果步骤307中判断结果为“是”,则执行步骤308,判断是否有且只有一张主表;如果步骤308中判断结果为“是”,则执行步骤309,拼接生成子查询sql的from部分;如果步骤308中判断结果为“否”,则执行步骤310,删除选择的多余主表,跳转回步骤307;步骤311,判断是否含有子表;如果步骤311中判断结果为“是”,则执行步骤312。4.如权利要求3所述的方法,其特征在于:所述步骤205设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件,进一步包括步骤312,转到连接...

【专利技术属性】
技术研发人员:高铁牛
申请(专利权)人:用友软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1