谁帮忙解释一下这段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,则硬盘中的文件里面的数据块的内容请问被改掉了吗?