Oracle:仅在满足条件时更新字段

ctrmrzij  于 2023-04-11  发布在  Oracle
关注(0)|答案(2)|浏览(212)

我想根据日期字段更新员工表列值。

CREATE TABLE employee
( 
id number(10) NOT NULL,  
name varchar2(40) NOT NULL,
emp_cus number(10) , 
emp_btdate TIMESTAMP
);

INSERT INTO employee VALUES ( 9369 , 'Sameer' , 45 ,  CURRENT_TIMESTAMP);

我想根据条件更新emp_cus

  • 从emp_btdate中提取年份。
  • 如果是下一年,那就加100。
  • 否则将emp_cus值加20。

我已经试过了。需要帮助的时候案件

UPDATE
    employee
SET
    emp_cus = 
         CASE 
            WHEN  THEN emp_cus + 100 
           
            ELSE 20
         END

http://sqlfiddle.com/#!4/b588f4/1

avwztpqn

avwztpqn1#

可以使用以下UPDATE语句:

UPDATE employee
SET emp_cus = 
    CASE 
        WHEN EXTRACT(YEAR FROM emp_btdate) = EXTRACT(YEAR FROM CURRENT_TIMESTAMP) + 1
            THEN emp_cus + 100
        ELSE
            emp_cus + 20
    END;
gt0wga4j

gt0wga4j2#

您可以使用TRUNC(.., 'year')获取一年的第一天,并添加INTERVAL '1' Year以从中获取下一年。

UPDATE
    employee
SET
    emp_cus = 
         CASE 
            WHEN Trunc(emp_btdate, 'year') = Trunc(sysdate, 'year') + INTERVAL '1' Year 
              THEN emp_cus + 100 
            ELSE 20
         END

相关问题