如何根据行用多个值填充 table 的字段

how to populate a table's fields with multiple values depending on the row

我有一个名为 sinvent 的 table,其中包含 accno、jno 和 saccno 列。 jno 和 saccno 已经填满了数字,很多数字 repeat.i 需要根据其关联的 jno 使用以下值填充 accno。我该如何编写单个查询来执行此操作?

accno = 4010 for jno < 09999
accno = 4011 for jno = 00011
accno = 4012 for jno = 00012
accno = 4714 for jno = 00014
accno = 4018 for jno > 80000 and jno < 99998
accno = 4008 for saccno = 7 and 8
accno = 4714 for jno = 04714 and 4714

如有任何帮助,我们将不胜感激。

我试过使用

update sinvent
set 
  accno = '4010' where jno < '09999',
  accno = '4011' where jno = '00011'

但是它说不能在同一子句中为一列分配多个值

您必须使用 CASE inside the UPDATE 语句:

UPDATE sinvent
    SET accno = CASE
        WHEN jno < '09999' THEN '4010' 
        WHEN jno = '00011' THEN '4011'
        WHEN jno = '00012' THEN '4012' 
        WHEN jno = '00014' THEN '4014' 
        WHEN (jno > '80000' and jno < '99998') THEN '4018' 
        WHEN (saccno = '7' OR saccno = '8') THEN '4008' 
        WHEN (jno = '4714' OR jno = '04714') THEN '4714' 
    END