答案 0 :(得分:4)
给出了一些MODEL的例子here。
就我个人而言,我曾多次看过MODEL,但还没有成功找到它的用例。虽然它首先看起来很有用,但是很多地方只有文字起作用(而不是绑定或变量)限制了它的灵活性。例如,在行间计算中,您不能轻易引用“上一个”或“下一个”行,但必须能够通过其属性进行绝对识别。因此,您不能说“在上个月使用相同日期的行获取值”,但只能编码特定日期。
某些分析工具可能会(内部)使用它。但作为最终用户工具,我从来没有“得到”它。我之前曾建议,如果你发现一个问题,你认为可以通过应用MODEL条款来解决,那就去做一个躺下,直到感觉消失。
答案 1 :(得分:4)
当你慢慢阅读official whitepaper时,我认为MODEL子句很容易理解。在我看来,白皮书一步一步地很好地解释了MODEL子句,一次向示例中添加了一个特性,省略了官方文档中最先进的特性。
从白皮书中,我也发现很容易理解何时实际使用MODEL子句。在某些示例中,使用MODEL
执行“Excel-spreadsheet-like”操作要简单得多,而不是使用窗口函数,CONNECT BY
或子查询因子。想想Excel。无论何时要为Excel列定义复杂规则集,请使用MODEL
子句。示例Excel电子表格规则:
A10 = A9 + A8
B10 = A10 * 5
C10 = MAX(A1:A9)
D10 = C10 / A10
换句话说,MODEL
是一个非常强大的SQL电子表格!
答案 2 :(得分:0)
最好的解释是在官方白皮书中。它使用SH演示模式,您确实需要安装它。
http://www.oracle.com/technetwork/middleware/bi-foundation/10gr1-twp-bi-dw-sqlmodel-131067.pdf
我认为他们没有很好地解释这一点。它基本上允许您将数据加载到数组中,然后使用直接SQL循环遍历数组,而不必编写过程逻辑。这些术语很多都基于电子表格术语(它们在Excel帮助中使用)。所以,如果你有他们excel,这将是令人困惑的。
他们应该为每个查询绘制一张图片,并显示创建的数组,而不是显示如何查看数组。语法看起来基于Excel语法。我不确定这是否适用于所有电子表格工具。
它有用途。箱配件是最常见的。见第二个例子。这基本上是一个复杂的组,您按范围进行分组,但该范围可能会发生变化。它需要程序逻辑。该示例提供了3种方法,其中一种方法是模型子句。
http://www.oracle.com/technetwork/issue-archive/2012/12-mar/o22asktom-1518271.html
我认为进行复杂电子表格计算的人(通常是经理)可能更容易看到用于此并获得术语。