WEB开发网
开发学院数据库DB2 使用DB2 UDB OLAP函数 阅读

使用DB2 UDB OLAP函数

 2008-09-03 16:28:17 来源:WEB开发网   
核心提示: selectSOME_DATEASNOBODY_ON_TRIPFROMDATE_SEQwhereSOME_DATEBETWEENDATE(’01/01/2003’)ANDDATE(’01/31/2003’)ANDNOTexists(selec

selectSOME_DATEASNOBODY_ON_TRIPFROMDATE_SEQ
whereSOME_DATEBETWEENDATE(’01/01/2003’)ANDDATE(’01/31/2003’)
ANDNOTexists(select*FROMBUSINESS_TRIPwhereSOME_DATEBETWEENDATE_FROMANDDATE_TO);
NOBODY_ON_TRIP 
-------------- 
01/01/2003   
01/02/2003   
01/03/2003   
01/04/2003   
01/05/2003   
01/11/2003   
01/12/2003   
01/18/2003   
01/19/2003   
01/25/2003   
01/26/2003    
11record(s)selected.

这个查询非常简单。在[article on Pivot Tables]中讨论了一些肯定是更复杂的替代方案。

假设有一个类似的任务:“选择 2003 年 1 月份有两名以上雇员在出差的所有日子”,同样,这里日历表 DATE_SEQ 也提供了一个非常容易的方法:

selectSOME_DATEASTHREE_OR_MORE_ON_TRIPFROMDATE_SEQ
whereSOME_DATEBETWEENDATE(’01/01/2003’)ANDDATE(’01/31/2003’)
AND(selectcount(*)FROMBUSINESS_TRIPwhereSOME_DATEBETWEENDATE_FROMANDDATE_TO)>2;
THREE_OR_MORE_ON_TRIP 
------------------- 
01/08/2003 

同样,如果不能创建辅助表,我们就可以使用表表达式:

selectSOME_DATEASTHREE_OR_MORE_ON_TRIP 
FROM 
(selectDATE(’01/01/2003’)+ROW_NUMBER()OVER()DAYSASSOME_DATEFROMSYSCAT.TABLES)ASDATE_SEQ
whereSOME_DATEBETWEENDATE(’01/01/2003’)ANDDATE(’01/31/2003’)
AND(selectcount(*)FROMBUSINESS_TRIPwhereSOME_DATEBETWEENDATE_FROMANDDATE_TO)>2;

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 DB UDB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接