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

使用DB2 UDB OLAP函数

 2008-09-03 16:28:17 来源:WEB开发网   
核心提示: insertINTOGUEST_ASSIGNMENTselectGUEST_ID,ROOM_IDFROM(selectROW_NUMBER()OVER(ORDERBYROOM_ID)ASROOM_NUMBER,ROOM_IDFROMROOM)ASRjoin(selectROW_NUMBER

insertINTOGUEST_ASSIGNMENT
selectGUEST_ID,ROOM_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

我们已经看到,在这种情况下使用 ROW_NUMBER() 函数可以为我们的开发节省很多力气。我们不必打开两个游标并迭代它们。

使用 ROW_NUMBER() OVER(PARTITION ... ) 将不抽烟的客人分配到“无烟”房间

前一章的示例过于简单。这里让我们更接近现实一点。让我们确保吸烟的客人住进允许吸烟的房间,而不吸烟的客人则住进无烟房间。下面的查询就实现了这一点:

selectROOM_NUMBER,GUEST_NUMBER,SMOKER,SMOKING,ROOM_ID,GUEST_ID
FROM
(selectROW_NUMBER()OVER(PARTITIONBYSMOKINGORDERBYROOM_ID)ASROOM_NUMBER,ROOM_ID,SMOKINGFROMROOM)ASR
join
(selectROW_NUMBER()OVER(PARTITIONBYSMOKERORDERBYGUEST_ID)ASGUEST_NUMBER,GUEST_ID,SMOKERFROMGUEST)ASG
ONROOM_NUMBER=GUEST_NUMBERANDSMOKER=SMOKING
ROOM_NUMBER     GUEST_NUMBER    SMOKERSMOKINGROOM_ID  GUEST_ID  
---------------------------------------------------------------------------
          1          1N   N       139     2
          2          2N   N       142    321
          3          3N   N       202    444
          1          1Y   Y       121     17
          2          2Y   Y       201     57

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

Tags:使用 DB UDB

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