Заменить значение в столбце на значение в другом столбце

У меня есть набор данных, который выглядит так в SQL.

Col1     Col2     Col3     
   A        4        1
   B        5     NULL 
   C        6        1
   D        7     NULL
   E        8     NULL

Как добавить новый столбец со значениями в Col2 со значениями в Col3, если Col3 = 1, или же сохранить существующие значения в Col2.

Окончательный ожидаемый результат:

Col1     Col2     Col3     Col4     
   A        4        1        1
   B        5     NULL        5
   C        6        1        1
   D        7     NULL        7
   E        8     NULL        8

Я попробовал функцию объединения, но я не думаю, что это сработало:

SELECT 
Col1, 
Col2, 
Col3,
coalesce(Col3, Col2) AS Col4
FROM table1

4 ответа

Решение

Ваше описание предлагает case выражение:

select . . . 
       (case when col3 = 1 then col3 else col2 end) as col4

Вы также можете выразить вышеизложенное как

select . . . 
       (case when col3 = 1 then 1 else col2 end) as col4

Для предоставленных вами данных, coalesce() также должен работать.

Попробуй это:

SELECT 
    Col1, 
    Col2, 
    Col3,
    CASE WHEN Col3 IS NOT NULL THEN Col3 ELSE Col2 END AS Col4
FROM table1
Insert into table2
select 
Col1, 
Col2, 
Col3, 
(case when col3 = 1 then 1 else col2 end) as col4
FROM table1
-- this should do what you want
SELECT 
Col1, 
Col2, 
Col3,
CASE WHEN Col3 = 1 THEN Col3 ELSE Col2 END AS NewCOL
FROM table1
Другие вопросы по тегам