Как заполнить поля таблицы несколькими критериями, некоторые из которых перекрываются

У меня есть таблица с именем sinvent с колонками accno, jno и saccno. jno и saccno уже заполнены числами, многие из чисел повторяются. Мне нужно заполнить accno следующими значениями, на основе которых jno связан с ним, но некоторые диапазоны перекрываются. например, мне сначала нужно заполнить весь столбец accno '4010', а затем следующие критерии определяют, что заменить значения, я попробовал приведенный ниже код, и он не выполняет все задачи, только некоторые из них. Как мне написать один запрос для этого?

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

1 ответ

Решение

Это сработало

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
Другие вопросы по тегам