您的位置:首页 > 数据库 > Oracle

68.Oracle数据库SQL开发之 高级查询——使用MODEL子句

2015-11-15 09:37 531 查看
68.Oracle数据库SQL开发之 高级查询——使用MODEL子句
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/49847085

10g中新增的MODEL子句可以用来进行行间计算。允许像访问数组中元素那样访问记录中的某个列。

         查询获取2003年内每个月由员工21完成的产品类型为#1和#2的销量,并根据2003年的销售数据预测出2004年1月、2月和3月的销量。

store@PDB1> selectprd_type_id,year,month,sales_amount from all_sales where prd_type_id between 1and 2 and emp_id=21

    model

    partitionby (prd_type_id)

    dimensionby (month,year)

    measures(amount sales_amount) (sales_amount[1,2004]=sales_amount[1,2003],

   sales_amount[2,2004]=sales_amount[2,2003]+sales_amount[3,2003],

    sales_amount[3,2004]=round(sales_amount[3,2003]*1.25,2))

    order byprd_type_id,year,month;

 

PRD_TYPE_ID    YEAR        MONTH SALES_AMOUNT

----------- ---------- ----------------------

           1    2003              1     10034.84

           1    2003              2     15144.65

           1    2003              3     20137.83

           1    2003              4     25057.45

           1    2003              5     17214.56

           1    2003              6     15564.64

           1    2003              7     12654.84

           1    2003              8     17434.82

           1    2003              9     19854.57

           1    2003            10    21754.19

           1    2003            11    13029.73

           1    2003            12    10034.84

           1    2004              1     10034.84

           1    2004              2     35282.48

           1    2004              3     25172.29

           2    2003              1      1034.84

           2    2003              2      1544.65

           2    2003              3      2037.83

           2    2003              4      2557.45

           2    2003              5      1714.56

           2    2003              6      1564.64

           2    2003              7      1264.84

           2    2003              8      1734.82

           2    2003              9      1854.57

           2    2003            10     2754.19

           2    2003            11     1329.73

           2    2003            12     1034.84

           2    2004              1      1034.84

           2    2004              2      3582.48

           2    2004              3      2547.29

 

30 rows selected.

PARTITION BY(prd_type_id) 指定结果是根据prd_type_id分区的。

DIMENSION BY(month,year)定义数组的位数是month和year

MEASURES(amount sales_amount)表名数组中的每个单元包好一个数量,同时表名数组名为sales_amount.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: