熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

利用Oracle10g的MODELSQL進行行間計算(二)

2013-11-13 15:38:08  來源: Oracle 

  規則也可以是多個維度不同取值本例假定不同年份之間比較比如要求年的=年的+

         SELECT yearcode
  p_id v
  FROM t_
  WHERE code IN ()
  MODEL RETURN UPDATED ROWS
  PARTITION BY (code)
  DIMENSION BY (p_idyear)
  MEASURES (v)
  RULES (
  v[err] = v[] + v[v[])
  ORDER BY code p_id;
  YEAR CODE P_ID V
     
    err 
    err 

  如果年份很多每個年份都是和上年比較這種描述可以用CV()函數簡化

         SQL> insert into t_ select  yearcodep_idvv from t_;
  SELECT yearcode
  p_id v
  FROM t_
  WHERE code IN ()
  MODEL RETURN UPDATED ROWS
  PARTITION BY (code)
  DIMENSION BY (p_idyear)
  MEASURES (v)
  RULES (
  v[errfor year in(  )] = v[CV(year)] + v[CV(year)v[CV(year)])
  ORDER BY code p_id;
  YEAR CODE P_ID V
     
    err 
    err 
    err 
    err 

  如果year是數值類型還可以用for year from to increment 的語法如果是其他類型還可以用在in子句帶子查詢的辦法

  比如for year in (select year from t_)

  但需要注意不能采用year in 的語法year in的語法只能符號引用已經存在的單元格而v[errx]是新單元格

  單個年份的寫法如下:

         SELECT yearcode
  p_id v
  FROM t_
  WHERE code IN ()
  MODEL RETURN UPDATED ROWS
  PARTITION BY (code)
  DIMENSION BY (p_idyear)
  MEASURES (v)
  RULES (
  v[err] = v[CV()] + v[CV()] v[CV()])
  ORDER BY code p_id;
  YEAR CODE P_ID V
     
    err 
    err 

  而

         SELECT yearcode
  p_id v
  FROM t_
  WHERE code IN ()
  MODEL RETURN UPDATED ROWS
  PARTITION BY (code)
  DIMENSION BY (p_idyear)
  MEASURES (v)
  RULES (
  v[erryear in ()] = v[CV()] + v[CV()] v[CV()])
  則返回


From:http://tw.wingwit.com/Article/program/Oracle/201311/17047.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.