当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 数据仓库基本报表制作过程中的SQL写法

MSSQL
SQL Server SA权限总结经典技术
ASP数据库编程SQL常用技巧
SQL SERVER数据库开发之存储过程应用
SQL Server 2000的安全配置
MSSQL经典语句
SQL 经典语句
有用的SQL语句(删除重复记录,收缩日志)
Access 数据类型与 MS SQL 数据类型的相应
SQL语句示例
SQL数据类型详解
将Sql Server对象的当前拥有者更改成目标拥有者
MSSQL内外连接(INNER JOIN)语句详解
SQL 外链接操作小结 inner join left join right join
SQL Server中网络备份一例
SQL语句导入导出大全
SQL 新增/修改 表字段列的类型等
系统存储过程,sp_executesql
sql2005开启xp_cmdshell
实例学习SQL的Select命令
删除数据库中重复数据的几个方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 46 ::
收藏到网摘: n/a

这篇论坛文章(赛迪网技术社区)主要介绍了数据仓库基本报表制作过程中的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)

)