Oracle中使用SQL MODEL定义行间计算
2007-05-10 12:20:26 来源:WEB开发网核心提示: 请注意,在上述结果中,Oracle中使用SQL MODEL定义行间计算(10),尽管接受了 1995–2002 年间的所有年份,您也只会看到 1999–2001 年的值,由于没有一种产品有 1998 年的值,因此在任何情况下,这是因为该表格只有这几年的数据,CV()
请注意,在上述结果中,尽管接受了 1995–2002 年间的所有年份,您也只会看到 1999–2001 年的值。这是因为该表格只有这几年的数据。CV() 函数将提供左侧当前引用的单元格的 DIMENSION BY 关键字当前值。当上述规则的左侧引用单元格 Bounce 和 1999 时,右侧表达式将如下所示: sales['Mouse Pad', 1999] + 0.2 * sales['Y Box', 1999]
同样,当左侧引用单元格 Bounce 和 2000 时,右侧表达式将为: sales['Mouse Pad', 2000] + 0.2 * sales['Y Box', 2000]
CV() 函数将维度关键字作为其参数。还可以使用不带任何参数的 CV()(如 CV()),在这种情况下,暗示了位置引用。以上规则还可以写为: s['Bounce', year BETWEEN 1995 AND 2002] =
s['Mouse Pad', cv()] + 0.2 * s['Y Box', cv()]
CV() 函数只能在右侧单元格引用中使用。
2.您希望计算出产品 Y Box、Bounce 和 Mouse Pad 在意大利的销售年增长率。从 SQL*Plus 会话中,执行以下脚本:
@c:wkdircvf2.sql
cvf2.sql 脚本包含以下内容: SELECT SUBSTR(country,1,20) country,
SUBSTR(prod,1,15) prod, year, sales, growth
FROM sales_view
WHERE country='Italy'
MODEL RETURN UPDATED ROWS
PARTITION BY (country)
DIMENSION BY (prod, year)
MEASURES (sale sales, 0 growth)
RULES (
growth[prod in ('Bounce','Y Box','Mouse Pad'), year between 1998 and 2001] =
100* (sales[cv(prod), cv(year)] -
sales[cv(prod), cv(year) -1] ) /
sales[cv(prod), cv(year) -1] )
ORDER BY country, prod, year
/
请注意,结果中的空白单元格都是 NULL。如果没有前两年的产品值,那么规则将生成 NULL。由于没有一种产品有 1998 年的值,因此在任何情况下,1999 年的增长计算均为 NULL。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››使用linux中的quota教程
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››使用jxl生成带动态折线图的excel
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
赞助商链接