Использование IF..ELSE в ОБНОВЛЕНИИ (SQL Server 2005 и / или ACCESS 2007)

Мне нужно установить запрос, как показано ниже:

UPDATE XXXXXX
IF column A = 1 then set column B = 'Y' 
ELSE IF column A = 2 then set column C = 'Y' 
ELSE IF column A = 3 then set column D = 'Y' 

и так далее и тому подобное...

Я могу сделать это, используя несколько запросов, но мне было интересно, смогу ли я сделать это всего за 1 оператор вместо этого.

3 ответа

Это должно работать

update table_name
  set column_b = case
                  when column_a = 1 then 'Y'
                  else null
                 end,
  set column_c = case
                  when column_a = 2 then 'Y'
                  else null
                 end,
  set column_d = case
                  when column_a = 3 then 'Y'
                  else null
                 end
where
 conditions

вопрос в том, почему вы хотите это сделать... вы можете переосмыслить модель данных. Вы можете заменить null с тем, что вы хотите.

Да, вы можете использовать CASE

UPDATE table 
SET columnB = CASE fieldA 
        WHEN columnA=1 THEN 'x' 
        WHEN columnA=2 THEN 'y' 
        ELSE 'z' 
      END 
WHERE columnC = 1
UPDATE products 
INNER JOIN zofertas 
    ON products.code=zofertas.codigo 
SET products.price=zofertas.precio 
IF products.price>zofertas.precio  
Другие вопросы по тегам