[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

利用Oracle 10g的MODEL SQL进行行间计算(一)

作者: lutao,  出处:blog, 责任编辑: 唐小若, 
2008-08-27 08:50
  本文介绍了Oracle 10g利用MODEL SQL进行行间计算。

利用Oracle 10g的MODEL SQL进行行间计算(一)

           利用Oracle 10gMODEL SQL进行行间计算

  以产品产量表为例,一个工厂(用code表示)生产多种产品(用p_id表示),每种产品具有生产量(v1)和销售量(v2)

  产品代码具有审核关系,比如'10'='30'+'31',其中'10'代表大类,'30'和'31'代表'10'大类下的小类。

      SQL> create table t603 (code varchar(10),p_id varchar(7),v1 number(10),v2 number(10));
  Table created.
  SQL> insert into t603 values('600001','30',1,1);
  SQL> insert into t603 values('600001','31',1,1);
  SQL> insert into t603 values('600001','10',2,2);
  SQL> insert into t603 values('600002','10',3,2);
  SQL> insert into t603 values('600002','31',2,1);
  SQL> insert into t603 values('600002','30',2,1);
  SQL> commit;
  Commit complete.
  SQL> select * from t603;
  CODE P_ID V1 V2
  ---------- ------- ---------- ----------
  600001 30 1 1
  600001 31 1 1
  600001 10 2 2
  600002 10 3 2
  600002 31 2 1
  600002 30 2 1
  6 rows selected.
  SELECT code,
  p_id, v1
  FROM t603
  WHERE code IN ('600001','600002')
  MODEL RETURN UPDATED ROWS
  PARTITION BY (code)
  DIMENSION BY (p_id)
  MEASURES (v1)
  RULES (
  v1['err1'] = v1['30'] + v1['31'] -v1['10'])
  ORDER BY code, p_id;

   其中rule表示计算规则,'err1'表示这条审核关系的代号,它的值等于P_ID为'30'的v1值+P_ID为'31'的v1值-P_ID为'10'的v1值

  PARTITION BY (code)表示按工厂分区,即审核在一个工厂内的产品

共3页。 1 2 3 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅