欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【数据仓库基本报表制作过程中的SQL写法】,下面是详细的分享!
数据仓库基本报表制作过程中的SQL写法
这篇论坛文章(赛迪网技术社区)主要介绍了数据仓库基本报表制作过程中的SQL写法,详细内容请参考下文:
在数据仓库的基本报表制作过程中,通常会使用SQL作为数据源,可是普通的SQL实在不适合处理一些较为复杂的逻辑判断;一般而言,待查询的数据类型主要包括日期型、数字型、字符串这三类数据类型;在报表查询界面前段,实际上会对查询的数据作一些缺省处理,例如有些字段可输可不输,输入的字段需要按照输入的内容进行查询,而未输入的字段通常会选择忽略该条件的存在,如何判断该字段是否输入了呢,当然是针对这些未输入的字段提供一些缺省值了,例如某个数字类型的字段未输入,则赋一个缺省值-1,某个字符串字段未输入,则赋一个缺省值为’ ‘,某个日期未输入,则赋一个缺省值为SYSDATE;这个时候只要在SQL中针对不同的缺省值和应该输入的值进行处理就OK了。
当然当更加复杂的查询逻辑实在不适合用SQL处理时,最好选择使用存储过程的方法了;其次过于复杂的SQL可能会带来数据库性能问题,因此这些基于SQL的报表最好不要在大型数据表上操作。
下面是构造了一个包含以上三种数据类型的数据表,并填充了一些测试数据。
| 以下为引用的内容:
CREATE TABLE TestReportParameter ( VarcharField VARCHAR2(20), NumberField NUMBER(10,0), DateField DATE ); INSERT INTO TestReportParameter VALUES('a',1,SYSDATE-1); INSERT INTO TestReportParameter VALUES('b',2,SYSDATE); INSERT INTO TestReportParameter VALUES('c',3,SYSDATE+2); INSERT INTO TestReportParameter VALUES('d',4,SYSDATE-2); COMMIT; 处理的秘密在于对缺省值和输入值之间做一个判断,保持任何一种值的存在为TRUE即可。 对于单值数据的处理比较简单,参看下面脚本 SELECT * FROM TestReportParameter WHERE (' '=&VarcharField OR VarcharField=&VarcharField) AND (-1=&NumberField OR NumberField=&NumberField) |
对于多选值的处理则一定要使用DECODE函数才能避免错误的发生,处理的逻辑同上。
| 以下为引用的内容:
SELECT * FROM TestReportParameter WHERE ( ' '=DECODE(&VarcharField,' ',' ',&VarcharField) OR VarcharField IN (&VarcharField) ) AND ( -1=DECODE(&NumberField,-1,-1,&NumberField) OR NumberField IN (&NumberField) ) |
以上所分享的是关于数据仓库基本报表制作过程中的SQL写法,下面是编辑为你推荐的有价值的用户互动:
相关问题:数据仓库是如何设计的
答:首先你要设计数据库的软件,比如ACCESS,SQL都是设计数据库比较常用的软件。 有了软件后,打开软件,可以新建数据库,然后再数据库中建立表,在表中建立相对应的列,列是用来存放数据的。这样数据库初步就设计完成了。 >>详细
相关问题:数据仓库三层结构中的组成部分是
答:数据仓库数据库 是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。相对于操纵型数据库来说其突出的特点是对海量数据的支持和快速的检索技术。 数据抽取工具 把数据从各种各样的存储方式中拿出来,进行必要的转化、整理,再存... >>详细
相关问题:我想问下大牛们,数据仓库工程师,BI工程师,大数...
答:http://www.ppvke.com/Blog/archives/916这个网业说的就是hadoop http://www.ppvke.com/Blog/archives/2492这个说的是数据分析师 http://www.ppvke.com/Blog/archives/75数据分析的前景 另外ppv课例有很多关于你所问的这些职位的学习课程,免费 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
