使用DB2 UDB OLAP函数
2008-09-03 16:28:17 来源:WEB开发网不管事故涉及的车辆是奇数还是偶数,该查询都给出了正确的结果。可以随意添加记录并进行检验。同样,如上一章所述,也可以通过一些其他的方法来解决这个问题。通过使用 ROW_NUMBER() ,我们可以得到一个很简单的解决方案,这个方案可以快捷地开发出来,并且易于理解。
使用 ROW_NUMBER() 为客人分配房间
让我们考虑一个简单的问题。假设有两个表:一个是宾馆可用房间的列表,一个是刚到的宾馆客人的列表。我们需要将可用的房间分配给刚到的客人,那么如果有空房间的话,应该尽量使每个客人得到一个房间。为了解决这样的问题,通常需要打开两个游标,一个是用于房间的游标,一个是用于客人的游标,然后迭代这两个游标,直到其中一个游标或者两个游标同时到达结尾处。下面是这个表的定义和一些样本数据:
createTABLEROOM(
ROOM_IDINTNOTNULLPRIMARYKEY,
SMOKINGchar(1)NOTNULLCHECK(SMOKINGIN(’N’,’Y’)));
insertINTOROOMVALUES(121,’Y’),(139,’N’),(142,’N’),(201,’Y’),(202,’N’);
createTABLEGUEST(
GUEST_IDINTNOTNULLPRIMARYKEY,
SMOKERchar(1)NOTNULLCHECK(SMOKERIN(’N’,’Y’)));
insertINTOGUESTVALUES(321,’N’),(17,’Y’),(57,’Y’),(91,’Y’),(2,’N’),(444,’N’);
createTABLEGUEST_ASSIGNMENT(
GUEST_IDINTNOTNULLPRIMARYKEY,
ROOM_IDINTNOTNULLUNIQUE,
FOREIGNKEY(GUEST_ID)REFERENCESGUEST(GUEST_ID),
FOREIGNKEY(ROOM_ID)REFERENCESROOM(ROOM_ID));
更多精彩
赞助商链接