Заменить значение в столбце на значение в другом столбце
У меня есть набор данных, который выглядит так в 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