使用DB2 UDB OLAP函数
2008-09-03 16:28:17 来源:WEB开发网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
更多精彩
赞助商链接