如何使用多个条件填充 table 的字段,其中一些条件重叠

how to populate a table's fields with multiple criteria, some of which overlap

我有一个名为 sinvent 的 table,其中包含 accno、jno 和 saccno 列。 jno 和 saccno 已经填满了数字,很多数字 repeat.i 需要根据与其关联的 jno 使用以下值填充 accno,但有些范围重叠。例如,我首先需要用“4010”填充整个 accno 列,然后根据以下条件确定用什么替换值我已经尝试了下面的代码,它不会执行所有任务,只有其中一些任务。如何编写单个查询来执行此操作?

UPDATE sinvent
accno = 4010 all
accno = CASE 
  WHEN jno < '09999' THEN '4010'
  WHEN jno = '00011' THEN '4011'
  WHEN jno = '00012' THEN '4012' 
  WHEN jno = '00014' THEN '4714' 
  WHEN (jno > '80000' AND jno < '99998') THEN '4018'
  WHEN (saccno = '7' OR saccno = '8') THEN '4008' 
  WHEN (jno = '4714' OR jno = '04714') THEN '4714'
  WHEN (jno = '4012' OR jno = '04012') THEN '4012'
  WHEN (jno = '4006' OR jno = '4506') THEN '4006'
  WHEN jno = '4116' THEN '4116'
  WHEN jno = '04011' THEN '4011'
  WHEN (jno > '60000' AND jno < '80000') THEN '4015'
  END

这有效

UPDATE sinvent
accno = case
when (jno > '60000' AND jno < '80000') then '4015'
when jno = '04011' then '4011'
when jno = '4116' then '4116'
when jno = '4506' then '4006'
when jno = '4006' then '4006'
when jno = '4012' then '4012'
when jno = '04012' then '4012'
when jno = '4714' then '4714'
when jno = '04714' then '4714'
when (saccno = '7' OR saccno = '8') THEN '4008' 
when jno = '00014' then '4714'
when jno = '00012' then '4012'
when jno = '00011' then '4011'
when (jno > '80000' AND jno < '99998') then '4018'
when jno < '09999' then '4010'
when code = '1168' then '4014'
else accno
end