假设我想在所有收入栏中增加2500美元奖金。如何实现它?例如
Old table:
id name salary
1 John 8000
2 Labron 5000
3 Elvis 6000
New table:
id name salary SalaryWithBonus
1 John 8000 10500
2 Labron 5000 7500
3 Elvis 6000 8500
我必须使用PL / SQL函数吗?我是这个领域的新人,所以如果这个问题有点愚蠢,请不要生气。
答案 0 :(得分:1)
添加列:
ALTER TABLE table_name
ADD SalaryWithBonus DECIMAL(12,2);
填写字段:
UPDATE
table_name
SET
SalaryWithBonus = salary + 2500;
如下所示,如果薪水为NULL
,您有两个选择。
NULL
视为0 NULL
的人设置奖金。选项1:
UPDATE
table_name
SET
SalaryWithBonus = COALESCE(salary,0) + 2500;
选项2:
UPDATE
table_name
SET
SalaryWithBonus = salary + 2500
WHERE
salary IS NOT NULL;
答案 1 :(得分:0)
这是另一种方法。有一个名为BONUS的表,有一个YEAR列。 您还可以每月存储奖金。
CREATE TABLE OLD_TABLE
(ID NUMBER, NAME VARCHAR2(12), SALARY DECIMAL(18,2));
INSERT INTO OLD_TABLE values(1,'John',8000);
INSERT INTO OLD_TABLE values(2,'Labron',5000);
INSERT INTO OLD_TABLE values(3,'Elvis',6000);
INSERT INTO OLD_TABLE values(4,'Elvis2',NULL);
Create Table BONUS
(YEAR NUMBER, BONUS_AMT DECIMAL(18,2));
insert into BONUS VALUES('2016','2500');
insert into BONUS VALUES('2017','2500');
SELECT Id, Name, Salary, (NVL(salary,0) + BONUS_AMT) SalaryWithBonus FROM OLD_TABLE CROSS JOIN BONUS WHERE BONUS.YEAR = 2017