当前位置:数据库 > Oracle >>

谁帮忙解释一下这段ORACLE语句什么意思?

SELECT id, cn, cv FROM t_col_row MODEL RETURN UPDATED ROWS PARTITION BY (ID) DIMENSION BY (0 AS n) MEASURES ('xx' AS cn,'yyy' AS cv,c1,c2,c3) RULES UPSERT ALL ( cn[1] = 'c1', cn[2] = 'c2', cn[3] = 'c3', cv[1] = c1[0], cv[2] = c2[0], cv[3] = c3[0] ) ORDER BY ID,cn
追问:你这是神马东西啊?
答案:这个是 Oracle 10g 版本以后, 新增的 MODEL 查询的功能。

很难一句话两句话解释明白。
下面是 Oracle的 MODEL 查询 的简单的例子,希望你可以通过简单的例子,明白处理的逻辑。

Oracle的 MODEL 查询
http://hi.zzzyk.com/wangzhiqing999/blog/item/d9ba67077825a4f509fa9357.html

Oracle的 MODEL 查询 II
http://hi.zzzyk.com/wangzhiqing999/blog/item/3c2e7bfc1b095b16d9f9fda9.html
其他:选择id,cn,从t_col_row简历
  模型
  还更新排
  隔墙被(身份证)
  (0作为维n)
  (“xx的措施,' ' cn yyy简历,c1,c2,c3)
  UPSERT所有规则
  (
  cn[1]= ' c1 ',
  cn[2]= ' c2 ',
  cn[3]= ' c3 ',
  cv[1]= c1[0],
  cv[2]= c2[0],
  cv[3]= c3[0]
  )
  波士顿以ID, ORACLE 的MODEL子句:
PARTITION BY (ID)  --以ID分区
DIMENSION BY (0 AS n)  -- 定义结果的维度,这里是从0开始到n的数字
MEASURES ('xx' AS cn,'yyy' AS cv,c1,c2,c3)  
RULES UPSERT ALL         --这里是不是update??? ,model子句默认当表达式左边的单元不存在时会插入一条新记录到数据库,rules update就是让它不插入,只更新有的记录
(
  cn[1] = 'c1',
  cn[2] = 'c2',
  cn[3] = 'c3',
  cv[1] = c1[0],
  cv[2] = c2[0],
  cv[3] = c3[0]
  )

--用来定义数据处理规则,或者算法公式,这里是处理cn和cv两列的数据
cn[1]第一行(上面维度定义)值等于'c1',下面的类似,就是左边的表达式的值等于右边,
model子句可以进行行间数据的计算,还有数据的行列之间转换 这里用到了SQL MODEL 子句,可以根据查询结果定义多维数组,然后将规则应用于该数组以计算新值。通过使用 MODEL 子句,可以将类电子表格计算引入数据库。

SELECT id, cn, cv FROM t_col_row
MODEL  -- 这是MODEL关键字
RETURN UPDATED ROWS  --将结果限制为在该查询中创建或更新的那些行
PARTITION BY (ID) --分区
DIMENSION BY (0 AS n) --维度
MEASURES ('xx' AS cn,'yyy' AS cv,c1,c2,c3) --度量
RULES UPSERT ALL  --定义规则
(
  cn[1] = 'c1',
  cn[2] = 'c2',
  cn[3] = 'c3',
  cv[1] = c1[0],
  cv[2] = c2[0],
  cv[3] = c3[0]
  )
ORDER BY ID,cn 

上一个:求oracle达人解决一个问题 不知道这个哪错了求帮助
下一个:ORACLE,DML语句中,插于更新后,还没COMMIT,则硬盘中的文件里面的数据块的内容请问被改掉了吗?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,