9i有MERGEMERGE 范例
下面的例子在OE模式下创建一个BONUSES表,BONUS的缺省值为100。然后插入BONUSES表所有有成绩的销售人员(基于OE_ORDERS表的SQLES_REP_ID字段)。最后,人力资源管理人员决定,所有的人员将得到分红。没有销售成绩的员工得到工资的1%的分红,而那些有销售成绩的员工将得到缺省分红以及工资的1%。可以用一条MERGE语句将完成上述修改: CREATE TABLE bonuses (employee_id NUMBER, bonus NUMBER DEFAULT 100);
INSERT INTO bonuses(employee_id) (SELECT e.employee_id FROM employees e, orders o WHERE e.employee_id = o.sales_rep_id GROUP BY e.employee_id);
SELECT * FROM bonuses;
EMPLOYEE_ID BONUS ----------- ---------- 153 100 154 100 155 100 156 100 158 100 159 100 160 100 161 100 163 100
MERGE INTO bonuses D USING (SELECT employee_id, salary, department_id FROM employees WHERE department_id = 80) S ON (D.employee_id = S.employee_id) WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01 WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) VALUES (S.employee_id, S.salary*0.01);
EMPLOYEE_ID BONUS ----------- ---------- 153 180 154 175 155 170 156 200 158 190 159 180 160 175 161 170 163 195 157 95 145 14 170 96 179 62 152 90 169 100 .
下面的例子在OE模式下创建一个BONUSES表,BONUS的缺省值为100。然后插入BONUSES表所有有成绩的销售人员(基于OE_ORDERS表的SQLES_REP_ID字段)。最后,人力资源管理人员决定,所有的人员将得到分红。没有销售成绩的员工得到工资的1%的分红,而那些有销售成绩的员工将得到缺省分红以及工资的1%。可以用一条MERGE语句将完成上述修改: CREATE TABLE bonuses (employee_id NUMBER, bonus NUMBER DEFAULT 100);
INSERT INTO bonuses(employee_id) (SELECT e.employee_id FROM employees e, orders o WHERE e.employee_id = o.sales_rep_id GROUP BY e.employee_id);
SELECT * FROM bonuses;
EMPLOYEE_ID BONUS ----------- ---------- 153 100 154 100 155 100 156 100 158 100 159 100 160 100 161 100 163 100
MERGE INTO bonuses D USING (SELECT employee_id, salary, department_id FROM employees WHERE department_id = 80) S ON (D.employee_id = S.employee_id) WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01 WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) VALUES (S.employee_id, S.salary*0.01);
EMPLOYEE_ID BONUS ----------- ---------- 153 180 154 175 155 170 156 200 158 190 159 180 160 175 161 170 163 195 157 95 145 14 170 96 179 62 152 90 169 100 .
解决方案 »
- ORA-01424:转义字符之后字符缺失或非法
- Oracle Developer 2000 怎样屏蔽报表列印功能?
- 字符集为AL32UTF8的数据库数据可否导入到字符集为ZHS16GBK的数据库
- oracle怎么根据表建立数据库
- 急!!求助各位高手,谁能帮我看看我的这条语句还能怎么写,ic10里有30万条数据
- 大哥大姐进来看一看创建对象带上not instantiable选项为什么会出现这种错误
- 求如何知道谁在锁表的方法[ORACLE/PLSQL]
- 如何导出数据库结构,形成文档。你是如何做的?
- 请教物化视图问题
- Oracle11g表已经存在数据了,有一个dmp文件想重新覆盖原有的数据,同时添加新的数据,该怎么做
- 大家帮忙,一个查询问题!
- 关于出现双工转换错误的问题,急
但我还未使用过。呵呵!一定要试试的!