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

使用DB2 UDB OLAP函数

 2008-09-03 16:28:17 来源:WEB开发网   
核心提示: 如果使用 OLAP 函数 ROW_NUMBER() ,就不需要打开两个游标并迭代房间和客人,使用DB2 UDB OLAP函数(8),相反,我们可以简单地联结这两个表,以检验该查询在其他情况下(例如有客人那么多的房间,或者没有客人那么多的房间)的工作情况,并在房间与客人之间取得 1 对 1

如果使用 OLAP 函数 ROW_NUMBER() ,就不需要打开两个游标并迭代房间和客人。相反,我们可以简单地联结这两个表,并在房间与客人之间取得 1 对 1 的对应关系。为了理解其工作原理,让我们首先看看这个选择查询及其输出:

selectROOM_NUMBER,GUEST_NUMBER,ROOM_ID,GUEST_ID
FROM
(selectROW_NUMBER()OVER(ORDERBYROOM_ID)ASROOM_NUMBER,ROOM_IDFROMROOM)ASR
join
(selectROW_NUMBER()OVER(ORDERBYGUEST_ID)ASGUEST_NUMBER,GUEST_IDFROMGUEST)ASG
ONROOM_NUMBER=GUEST_NUMBER
ROOM_NUMBER     GUEST_NUMBER    ROOM_ID  GUEST_ID  
--------------------------------------------------------------
         1          1    121     2
         2          2    139     17
         3          3    142     57
         4          4    201     91
         5          5    202    321

这个例子查询将 ROOM 表中的最多一条记录与 GUEST 表中的最多一条记录相联结。注意,您可以不像我那样指定排序(OVER(ORDER BY GUEST_ID)),而是宣称排序不重要(OVER()),甚至请求使用随机排序(OVER(ORDER BY RAND()))。在这种情况下,一个客人得不到一个房间,因为没有足够的空房间。可以随意添加记录到 ROOM 表中,以检验该查询在其他情况下(例如有客人那么多的房间,或者没有客人那么多的房间)的工作情况。

如果理解了联结的工作原理,填充 GUEST_ASSIGNMENT 表就比较容易了:

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

Tags:使用 DB UDB

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