You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨表使用CASE WHEN更新XYZ01、XYZ02项目对应stipend金额上调40%的方法

方案说明

你可以根据是否需要修改原表数据选择对应实现,两种写法都符合要求使用CASE WHEN语法的规则:

1. 仅查询展示上调后的金额(不修改原表数据)

通过两表关联,用CASE WHEN判断项目编号后计算调整后的金额:

SELECT 
  s.subjectid,
  s.stipdate,
  s.amount AS 原金额,
  CASE 
    WHEN sub.projid IN ('XYZ01', 'XYZ02') THEN s.amount * 1.4
    ELSE s.amount 
  END AS 调整后金额,
  sub.lname,
  sub.fname,
  sub.projid
FROM stipend s
LEFT JOIN subject sub ON s.subjectid = sub.subjectid
ORDER BY s.subjectid, s.stipdate;

2. 直接更新stipend表的原金额数据

如果需要永久修改原表的AMOUNT字段值,用如下UPDATE语句:

UPDATE stipend s
SET s.amount = CASE 
    WHEN EXISTS (
      SELECT 1 FROM subject sub 
      WHERE sub.subjectid = s.subjectid 
      AND sub.projid IN ('XYZ01', 'XYZ02')
    ) THEN s.amount * 1.4
    ELSE s.amount
  END;

如果你使用的数据库支持UPDATE JOIN语法(比如MySQL、PostgreSQL),也可以结合CASE WHEN写得更简洁:

UPDATE stipend s
JOIN subject sub ON s.subjectid = sub.subjectid
SET s.amount = CASE WHEN sub.projid IN ('XYZ01', 'XYZ02') THEN s.amount * 1.4 ELSE s.amount END;

逻辑补充

  • 仅当关联的subject表中projid为XYZ01或XYZ02时,才将对应stipend记录的AMOUNT乘以1.4(即上调40%),其余记录金额保持不变
  • 如果需要保留指定小数位数,可以在金额计算外层套ROUND()函数处理

内容的提问来源于stack exchange,提问作者Eddie14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:03