CN103646096A - 一种通过用户配置生成子查询的方法与装置 - Google Patents

一种通过用户配置生成子查询的方法与装置 Download PDF

Info

Publication number
CN103646096A
CN103646096A CN201310701518.3A CN201310701518A CN103646096A CN 103646096 A CN103646096 A CN 103646096A CN 201310701518 A CN201310701518 A CN 201310701518A CN 103646096 A CN103646096 A CN 103646096A
Authority
CN
China
Prior art keywords
apportion
judgment result
judgment
subquery
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310701518.3A
Other languages
English (en)
Other versions
CN103646096B (zh
Inventor
高铁牛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yonyou Software Co Ltd
Original Assignee
Yonyou Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yonyou Software Co Ltd filed Critical Yonyou Software Co Ltd
Priority to CN201310701518.3A priority Critical patent/CN103646096B/zh
Publication of CN103646096A publication Critical patent/CN103646096A/zh
Application granted granted Critical
Publication of CN103646096B publication Critical patent/CN103646096B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通过用户配置生成子查询的方法,所述的通过用户配置生成子查询的方法,该方法通过界面配置可生成对数据库表进行按条件分列处理的视图或子查询,生成的视图或子查询可以作为报表开发步骤“选择报表所需数据库表”时的特殊待选数据库表,故该方法可以作为报表开发系统的前置处理装置,避免了开发人员去处理复杂的查询和数据整理,易于修改和维护。

Description

一种通过用户配置生成子查询的方法与装置
技术领域
本发明涉及一种通过用户配置生成子查询方法,当报表开发需要对数据库表某一列数据按条件进行分列展示时,此方法可提供中间层的视图或子查询。
背景技术
现有技术中,通过选择报表所需数据库表,并设置数据库表的连接关系以及其他过滤条件,从而选择字段用于报表展示。当报表要求对数据库表中的某一列数据信息进行按条件分列展示时,需要开发人员在后台开发完成查询和处理数据,增加了报表开发的复杂度。
发明内容
为了克服现有技术中的上述不足,本发明提出了一种通过用户配置生成子查询的方法,当数据库表某一列需要按条件进行分列报表展示时,按用户配置条件生成基于该数据库表的视图(子查询),将该视图(子查询)作为报表开发步骤“选择报表所需数据库表”的特殊待选数据库表。
为实现上述发明目的,本发明采用的技术方案如下:
一种通过用户配置生成子查询的方法,其特征在于:
步骤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,生成case when语句的then、else和end as部分;
步骤323,获取条件列判断明细信息;
步骤324,生成case when语句的when部分;
步骤325,生成完整的case when条件判断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中所选择选择的数据库表的所有字段信息,供选择。未被选择的字段在将被隐藏处理。例如,在“贷款明细情况”报表项目实例中,选择了“合同编号”、“摘要”、“放款金额”、“还款金额”等字段。
步骤105,结束。
如果对于“贷款明细情况”报表,需要将“放款金额”分成“本年放款金额”和“年前放款金额”两列进行显示,即“合同执行情况表”的“业务日期”在本年的,“放款金额”字段展示在报表“本年放款金额”列,在年前的,展示在“年前放款金额”列,“还款金额”相应地分成“本年还款金额”和“年前还款金额”两列。现有的常规配置方法无法生成满足需求的报表。
图2示出了根据本发明的一个实施例的生成子查询的流程图。结合“贷款明细情况”报表需要获得进行了分列处理,已经包含“本年放款金额”、“年前放款金额”、“本年还款金额”和“年前还款金额”四列的视图的需求,即生成“合同执行情况表”的分列处理视图或子查询)进行流程描述。
步骤201,开始;
步骤202,选择待分列字段所在数据库表,待分列字段即用于按条件拆分成多列展示的数据库原字段:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,选择待分列字段“放款金额”、“还款金额”所在数据库表“合同执行情况表”。
步骤203,判断条件判断字段和待分列字段是否都位于同一数据库表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,条件判断字段为“业务日期”,和待分列字段“放款金额”、“还款金额”都位于“合同执行情况表”。
如果判断为否,继续执行步骤204,选择判断字段所在数据库表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,则需要选择“贷款合同表”。
步骤205,设置连接关系:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,则需要设置“合同执行情况表”和“贷款合同表”的连接关系。
步骤206,设置过滤条件:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,通过“业务日期”过滤条件查询最近5年内数据,避免数据量太大对效率产生影响。
步骤207,设置条件分列明细:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,针对“放款金额”列拆分成“本年放款金额”、“年前放款金额”两列展示,需要设置以下条件分列明细:当“业务日期”在本年内,“本年放款金额”取值“放款金额”,“年前放款金额”取值0;当“业务日期”在年前,“本年放款金额”取值0,“年前放款金额”取值“放款金额”。
步骤208,输出视图或子查询sql:通过上面设置的表信息、连接关系、过滤条件和条件分列明细,可以获取拼接视图或子查询sql所有元素。在步骤203中,如果判断的结果为是,则直接跳转到步骤206:因为条件判断字段和待分列字段都位于同一数据库表,只需一张表信息,不需要选择其他表,从而也不需要设置连接关系。
步骤209,结束。
图3示出了根据本发明的一个实施例的配置生成子查询的流程图。
步骤301,开始。
步骤302,通过查询数据库数据字典,获取数据库系统业务表信息供选择:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“合同执行情况表”、“贷款合同表”和其他所有业务相关表信息都会被获取并展示以供选择。
步骤303,获取选择设置信息:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,获取到选择的“合同执行情况表”和设置的“是否主表”信息,主表即待分列字段所在表。
步骤304,判断选择的表是否待分列字段所在表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,选择的“合同执行情况表”是待分列字段所在表。
如果步骤304中判断结果为“是”,则执行步骤305,将选择的表标记为主表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“合同执行情况表”被标记为主表。
如果步骤304中判断结果为“否”,则执行步骤306,将选择的表标记为子表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,则需要选择“贷款合同表”,此表并不是待分列字段所在表,会被标记为子表。
步骤307,判断是否选择完成:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,待分列字段和条件判断字段都位于“合同执行情况表”,故选择完成。
如果步骤307中判断结果为“否”,将会跳转到步骤302继续选择:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,则需继续选择该表。
如果步骤307中判断结果为“是”,则执行步骤308,判断是否有且只有一张主表。
如果步骤308中判断结果为“是”,则执行步骤309,拼接生成视图(子查询)sql的from部分,from部分即查询数据时所需的数据来源表信息:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,生成结果如下:
from fcloan_contract_exec fcloan_contract_exec
其中fcloan_contract_exec为“合同执行情况表”的数据库表名,如果需要“贷款合同表”的某些字段作为条件判断字段,并选择了“贷款合同表”,则生成结果如下:
from fcloan_contract_exec fcloan_contract_exec,fcloan_contract fcloan_contract
其中fcloan_contract为“贷款合同表”的数据库表名。
如果步骤308中判断结果为“否”,则执行步骤310,删除选择的多余主表,跳转回步骤307。
步骤311,判断是否含有子表:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,不含有子表。
如果步骤311中判断结果为“是”,则执行步骤312,转到连接关系设置:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,并选择了该表,即含有子表,则需设置连接关系。
步骤313,获取连接关系:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,如果需要“贷款合同表”的某些字段作为条件判断字段,并选择了该表,获取的连接关系设置为“合同执行情况表”的“合同主键”列等于“贷款合同表”的“主键”列。
步骤314,判断是否设置完成。
如果步骤314中判断结果为“否”,则跳转回步骤312继续设置:如果有多个子表,需要进行该步骤完成每个子表与主表的连接关系设置。
如果步骤314中判断结果为“是”,则执行步骤315;如果步骤311中判断结果为“否”,直接跳转到步骤315,
步骤315,进行过滤条件设置,此步骤可以是空设置:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,需设置业务日期在最近5年内的过滤条件。
步骤316,获取过滤条件:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,获取的过滤条件设置为业务日期大于等于(当前年份减4年)。
步骤317,判断是否设置完成。
如果步骤317中判断结果为“否”,则跳转回步骤315继续设置。
如果步骤317中判断结果为“是”,则执行步骤318,生成视图(子查询)sql的where部分,where部分即查询数据时的限制条件:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,生成结果如下:
where fcloan_contract_exec.busidate>=fiveyearago
其中fcloan_contract_exec.busidate表示“合同执行情况表”的“业务日期”字段,fiveyearago为4年前的年份表达式。
如果需要“贷款合同表”的某些字段作为条件判断字段,并选择了“贷款合同表”,设置了连接关系,则生成结果如下:
where fcloan_contract_exec.pk_contract=fcloan_contract.pk_contract
and fcloan_contract_exec.busidate>=fiveyearago
其中fcloan_contract_exec.pk_contract为“合同执行情况表”的“合同主键”列,fcloan_contract.pk_contract为“贷款合同表”的“主键”。
步骤319,进行分列明细设置,分列明细即某一列拆分成哪些列的明细列表数据,如某一列拆分成两列,则对应两条数据:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分成“本年放款金额”和“年前放款金额”两列,“还款金额”拆分成“本年还款金额”和“年前还款金额”两列,需对应四条数据。
步骤320,进行条件判断设置,条件判断即某一列拆分出一列的详细条件判断等信息,每一次完整的条件判断设置可生成步骤319中提到的一条明细数据:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,需进行具体的条件判断设置。
步骤321,获取拆分列、输出列、输出默认值信息:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,获取的拆分列、输出列、输出默认值信息为拆分列fcloan_contract_exec.payamount(“合同执行情况表”的“放款金额”字段)、输出列payyear(本年放款金额)、输出默认值0。
步骤322,生成case when语句的then、else和end as部分:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,生成结果如下:
Figure BDA0000441008690000081
步骤323,获取条件列判断明细信息:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,获取的条件列判断明细信息为业务日期在本年内。
步骤324,生成case when语句的when部分:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,生成结果如下:
when fcloan_contract_exec.busidate>='year'
其中year为当前年份的表达式。
步骤325,生成完整的case when条件判断sql片段:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,“放款金额”拆分出“本年放款金额”列,生成结果如下:
步骤326,判断是否设置完成:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,还需设置“放款金额”拆分出“年前放款金额”列、“还款金额”拆分出“本年还款金额”列、“还款金额”拆分出“年前还款金额”列的条件判断等信息,故设置未完成。
如果步骤326中判断结果为“否”,则跳转回步骤319继续设置:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,继续设置剩余分列信息。
如果步骤326中判断结果为“是”,则执行步骤327,生成select部分,select部分即最终要展示的列信息:在生成“合同执行情况表”的分列处理视图或子查询项目实例中,生成结果如下:
Figure BDA0000441008690000092
其中paybeforeyear为输出列“年前放款金额”,fcloan_contract_exec.repayamount为拆分列“还款金额”,repayyear为输出列“本年还款金额”,repaybeforeyear为输出列“年前还款金额”。
步骤328,拼接生成视图(子查询)sql,即将上面的select部分、from部分、where部分进行拼接输出。
步骤329,结束。
在本发明的一个具体实施方式中,图2中各步骤是根据使用者的视角所描述的,而图3是从后台实现的视角所描述。因此图3中各步骤的实现过程可以理解为独立完整的技术方案,也可以理解为为对于图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。
所述步骤205设置连接关系,所述连接关系为将一张表的一行与另一张表的一行或多行关联起来所需满足的条件,进一步包括
步骤312,转到连接关系设置;
步骤313,获取连接关系;
步骤314,判断是否设置完成;
如果步骤314中判断结果为“否”,则跳转回步骤312继续设置;
如果步骤314中判断结果为“是”,则执行步骤315。
所述步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式,进一步包括,
步骤315,进行过滤条件设置;
步骤316,获取过滤条件;
步骤317,判断是否设置完成;
如果步骤317中判断结果为“否”,则跳转回步骤315继续设置;
如果步骤317中判断结果为“是”,则执行步骤318,生成视图(子查询)sql的where部分。
所述步骤207,设置条件分列明细,进一步包括,
步骤319,进行分列明细设置;
步骤320,进行条件判断设置;
步骤321,获取拆分列、输出列、输出默认值信息;
步骤322,生成case when语句的then、else和end as部分;
步骤323,获取条件列判断明细信息;
步骤324,生成case when语句的when部分;
步骤325,生成完整的case when条件判断sql片段;
步骤326,判断是否设置完成;
如果步骤326中判断结果为“否”,则跳转回步骤319继续设置;
如果步骤326中判断结果为“是”,则执行步骤327,生成select部分。
所述步骤208,输出所生成的子查询,进一步包括,
步骤328,将上述select部分、from部分、where部分进行拼接子查询sql输出。
以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离权利要求所限定的精神和范围的情况下,可做出许多修改、变化或等效,但都将落入本发明的保护范围之内。

Claims (10)

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,转到连接关系设置;
步骤313,获取连接关系;
步骤314,判断是否设置完成;
如果步骤314中判断结果为“否”,则跳转回步骤312继续设置;
如果步骤314中判断结果为“是”,则执行步骤315。
5.如权利要求4所述的方法,其特征在于:
所述步骤206,设置过滤条件,所述过滤条件为筛选数据的表达式,进一步包括,
步骤315,进行过滤条件设置;
步骤316,获取过滤条件;
步骤317,判断是否设置完成;
如果步骤317中判断结果为“否”,则跳转回步骤315继续设置;
如果步骤317中判断结果为“是”,则执行步骤318,生成视图(子查询)sql的where部分。
6.如权利要求5所述的方法,其特征在于:
所述步骤207,设置条件分列明细,进一步包括,
步骤319,进行分列明细设置;
步骤320,进行条件判断设置;
步骤321,获取拆分列、输出列、输出默认值信息;
步骤322,生成case  when语句的then、else和end as部分;
步骤323,获取条件列判断明细信息;
步骤324,生成case  when语句的when部分;
步骤325,生成完整的case  when条件判断sql片段;
步骤326,判断是否设置完成;
如果步骤326中判断结果为“否”,则跳转回步骤319继续设置; 
如果步骤326中判断结果为“是”,则执行步骤327,生成select部分。
7.如权利要求6所述的方法,其特征在于:
所述步骤208,输出所生成的子查询,进一步包括,
步骤328,将上述select部分、from部分、where部分进行拼接子查询sql输出。
8.如权利要求7所述的方法,其特征在于:
如果步骤311中判断结果为“否”,直接跳转到步骤315,进行过滤条件设置。
9.如权利要求8所述的方法,其特征在于:
在所述步骤320,进行条件判断设置,进一步包括,
每一次完整的条件判断设置都将生成步骤319中的一条明细数据。
10.如权利要求9所述的方法,其特征在于:
所述from部分为查询数据时所需的数据来源表信息;
所述where部分为查询数据时的限制条件;
所述select部分为最终所要展示的列信息。
CN201310701518.3A 2013-12-18 2013-12-18 一种通过用户配置生成子查询的方法与装置 Active CN103646096B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310701518.3A CN103646096B (zh) 2013-12-18 2013-12-18 一种通过用户配置生成子查询的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310701518.3A CN103646096B (zh) 2013-12-18 2013-12-18 一种通过用户配置生成子查询的方法与装置

Publications (2)

Publication Number Publication Date
CN103646096A true CN103646096A (zh) 2014-03-19
CN103646096B CN103646096B (zh) 2017-01-18

Family

ID=50251310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310701518.3A Active CN103646096B (zh) 2013-12-18 2013-12-18 一种通过用户配置生成子查询的方法与装置

Country Status (1)

Country Link
CN (1) CN103646096B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778253A (zh) * 2015-04-20 2015-07-15 北京京东尚科信息技术有限公司 一种提供数据的方法和装置
CN107436918A (zh) * 2017-06-19 2017-12-05 阿里巴巴集团控股有限公司 数据库实现方法、装置和设备
CN107861963A (zh) * 2017-02-20 2018-03-30 平安科技(深圳)有限公司 险种合约的生成方法和装置
CN114265874A (zh) * 2022-03-02 2022-04-01 北京奥星贝斯科技有限公司 查询数据的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261622A (zh) * 2008-05-12 2008-09-10 金蝶软件(中国)有限公司 一种数据分拆方法及装置
US20080306907A1 (en) * 2005-01-19 2008-12-11 International Business Machines Corporation Redundant version information in history table that enables efficient snapshot querying
CN101697152A (zh) * 2009-10-23 2010-04-21 金蝶软件(中国)有限公司 一种数据库存储系统及其数据的拆分方法和装置
CN102043767A (zh) * 2009-10-13 2011-05-04 上海虹迪物流配送有限公司 一种自定义报表系统处理方法
US20130311442A1 (en) * 2012-05-15 2013-11-21 Thomas P. Weber System, Method, and Data Structure for Automatically Generating Database Queries which are Data Model Independent and Cardinality Independent

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080306907A1 (en) * 2005-01-19 2008-12-11 International Business Machines Corporation Redundant version information in history table that enables efficient snapshot querying
CN101261622A (zh) * 2008-05-12 2008-09-10 金蝶软件(中国)有限公司 一种数据分拆方法及装置
CN102043767A (zh) * 2009-10-13 2011-05-04 上海虹迪物流配送有限公司 一种自定义报表系统处理方法
CN101697152A (zh) * 2009-10-23 2010-04-21 金蝶软件(中国)有限公司 一种数据库存储系统及其数据的拆分方法和装置
US20130311442A1 (en) * 2012-05-15 2013-11-21 Thomas P. Weber System, Method, and Data Structure for Automatically Generating Database Queries which are Data Model Independent and Cardinality Independent

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张燕琴: "基于SQL Server数据库的查询优化", 《软件导刊》 *
马小丽等: "MS SQL Server2000中大数据量表的拆分与实现", 《电气传动自动化》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778253A (zh) * 2015-04-20 2015-07-15 北京京东尚科信息技术有限公司 一种提供数据的方法和装置
CN104778253B (zh) * 2015-04-20 2018-09-14 北京京东尚科信息技术有限公司 一种提供数据的方法和装置
CN107861963A (zh) * 2017-02-20 2018-03-30 平安科技(深圳)有限公司 险种合约的生成方法和装置
CN107436918A (zh) * 2017-06-19 2017-12-05 阿里巴巴集团控股有限公司 数据库实现方法、装置和设备
CN107436918B (zh) * 2017-06-19 2020-08-11 阿里巴巴集团控股有限公司 数据库实现方法、装置和设备
CN114265874A (zh) * 2022-03-02 2022-04-01 北京奥星贝斯科技有限公司 查询数据的方法和装置
CN114265874B (zh) * 2022-03-02 2022-05-03 北京奥星贝斯科技有限公司 查询数据的方法和装置

Also Published As

Publication number Publication date
CN103646096B (zh) 2017-01-18

Similar Documents

Publication Publication Date Title
CN111177231B (zh) 报表生成方法和报表生成装置
CN101681251B (zh) 从文档到排名短语的语义分析
CN105550241B (zh) 多维数据库查询方法及装置
CN103530376B (zh) 筛选条件提供方法、装置和搜索方法、装置
CN106599039B (zh) 一种支持关系数据库数据自由组合嵌套的统计表述方法
WO2015176526A1 (zh) 基于关系叠加组合的文档的标识、关联、搜索及展现的系统
CN109144997A (zh) 数据关联方法、装置及存储介质
CN104317587A (zh) 面向安卓移动设备的程序自动生成方法
CN103646096A (zh) 一种通过用户配置生成子查询的方法与装置
CN105653647B (zh) Sql语句的信息采集方法及系统
CN104965918B (zh) 一种基于查询关键词的搜索方法和装置
KR20040073343A (ko) 선언 시퀀스화된 리포트 파라미터화
US20140325476A1 (en) Managing a catalog of scripts
CN106462632A (zh) 具有内容规范层的媒体商店
CN104536997A (zh) 用于客户端界面的数据批量处理方法及装置
CN107145497A (zh) 基于图像和内容的元数据选择与内容匹配的图像的方法
KR20130053407A (ko) 데이터베이스 검색에 있어 조회 향상
CN105975489A (zh) 一种基于元数据的在线sql代码补全方法
CN102521713B (zh) 数据处理装置和数据处理方法
US8832601B2 (en) ETL tool utilizing dimension trees
CN102955825A (zh) 一种更新输入法词库的方法及系统
CN102184201B (zh) 一种用于选取查询序列的推荐序列的设备和方法
CN105138643A (zh) 专利检索系统及其检索方法
US8051110B2 (en) Identifying screen flows to support multiple entities and their diverse rules with a single application instance
US20100169267A1 (en) Method and system for data processing using multidimensional filtering

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Applicant after: Yonyou Network Technology Co., Ltd.

Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park

Applicant before: UFIDA Software Co., Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant