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

使用DB2 UDB OLAP函数

 2008-09-03 16:28:17 来源:WEB开发网   
核心提示: 注意:在不相等的条件下,联结两个表是完全合法的,使用DB2 UDB OLAP函数(4),像这个例子中就是如此,如前一章所述,让我们创建一个表,并插入一些数据: createTABLEBUSINESS_TRIP(EMPLOYEE_IDINTNOTNULL,DATE_FROMDATENOTNU

注意:在不相等的条件下,联结两个表是完全合法的,像这个例子中就是如此。

如前一章所述,我们也可以通过使用递归来得到所需的结果。在某些情况下,递归或许更加有效。不过,使用了顺序表的代码看上去更简单,更易于理解,并且不必为避免可能由递归招致的无限循环而担忧。因此,在这种情况下,比起使用递归来,使用 ROW_NUMBER 是一种简单的替代方法。

如果不能创建辅助表,那么使用表表达式并生成连续数会比较容易,像这样:

selectITEM_NAME,PRICE_PER_ITEMFROMSALE_ITEM 
join 
(selectROW_NUMBER()OVER()ASNUMFROMSYSCAT.TABLES)ASNUMBER_SEQ
ONNUMBER_SEQ.NUM<=SALE_ITEM.ITEM_QUANTITY
ORDERBYPRICE_PER_ITEMDESC

结果完全一样,不过性能上慢了一点。

如何使用日历表简化查询

我从 [article on Pivot Tables] 中摘出了这个例子。首先,让我们创建一个表,并插入一些数据:

createTABLEBUSINESS_TRIP(EMPLOYEE_IDINTNOTNULL,DATE_FROMDATENOTNULL,DATE_TODATENOTNULL);
insertINTOBUSINESS_TRIPVALUES
(1,DATE(’01/06/2003’),DATE(’01/10/2003’)),
(1,DATE(’01/13/2003’),DATE(’01/17/2003’)),
(1,DATE(’01/20/2003’),DATE(’01/24/2003’)),
(1,DATE(’01/27/2003’),DATE(’01/31/2003’)),
(2,DATE(’01/07/2003’),DATE(’01/08/2003’)),
(3,DATE(’01/08/2003’),DATE(’01/09/2003’));

假设有一个简单的任务:“选择 2003 年 1 月份没有雇员出差的所有日子”,这时日历表 DATE_SEQ 就很好用了。

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

Tags:使用 DB UDB

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