Использование IF..ELSE в UPDATE (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 оператор.

Ответ 1

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

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 на все, что хотите.

Ответ 2

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

UPDATE table 
SET columnB = CASE fieldA 
        WHEN columnA=1 THEN 'x' 
        WHEN columnA=2 THEN 'y' 
        ELSE 'z' 
      END 
WHERE columnC = 1