数据仓库基本报表制作过程中的SQL写法

数据仓库基本报表制作过程中的SQL写法,第1张

数据仓库基本报表制作过程中的SQL写法,第2张

在数据仓库制作基础报表的过程中,通常使用SQL作为数据源,但是普通的SQL不适合处理一些复杂的逻辑判断。一般来说,要查询的数据类型主要有日期型、数字型和字符串型。在报表查询界面的前段,实际上会对查询到的数据进行一些默认的处理。比如有些字段可以输入,输入的字段需要根据输入的内容进行查询。但是,没有输入的字段通常选择忽略此条件的存在。如何判断字段是否输入?当然,为这些没有输入的字段提供了一些默认值。例如,如果未输入数值字段,将分配默认值-1,如果未输入字符串字段,将分配该值。这时候处理不同的默认值和应该在SQL中输入的值就可以了。
当然,当更复杂的查询逻辑不适合SQL处理时,我们选择使用存储过程的方法;其次,过于复杂的SQL可能会造成数据库性能问题,所以这些基于SQL的报表不应该在大型数据表上操作。
下面是一个数据表,包含以上三种数据类型,并填充了一些测试数据。
CREATE TABLE TestReportParameter
(
VarcharField varchar 2(20),
NumberField NUMBER(10,0),
DATE field DATE
);
INSERT INTO TestReportParameter值(' a ',1,SYSDATE-1);
INSERT INTO TestReportParameter值(' b ',2,SYSDATE);
INSERT INTO TestReportParameter值(' c ',3,SYSDATE+2);
INSERT INTO TestReportParameter值(' d ',4,SYSDATE-2);
提交;
处理的秘诀在于在默认值和输入值之间做出判断,并保持任一值的存在为真。
单值数据的处理相对简单,参见下面的脚本
select *
from test report parameter
where(' = & varcharfield或varcharfield = & varcharfield)
and(-1 = & Number field或Number field = & Number field)
对于多项选择值的处理,必须使用DECODE函数来避免错误。处理逻辑同上。
SELECT *
FROM TestReportParameter
WHERE(
' ' = DECODE(& VarcharField,' ',' ',& VarcharField)
OR
VarcharField IN(& VarcharField)
)
,AND(
-1 = DECODE(& number field,-1,-1,& number field)
OR
number field IN(& number field)
)


位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 数据仓库基本报表制作过程中的SQL写法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情