Воспроизведение заявления Excel IF в Postgresql - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть таблица со следующими заголовками столбцов:

customer_id, Stage1,     Stage2,     Stage3
xxxxxx,      21-01-2019, 22-01-2019, 23-01-2019
yyyyyy,      22-02-2019,           , 24-02-2019

Я хочу создать четвертый столбец Stage2_New, который, если соответствующая ячейка в Stage2 пуста, назначает датув Stage1, в Excel это будет: IF(C3=" ", B3, C3)

Какой код SQL я могу использовать для достижения этой цели?

1 Ответ

0 голосов
/ 29 сентября 2019

Я предполагаю, что под пробелом вы подразумеваете NULL. Если это так, вы можете использовать COALESCE:

COALESCE(Stage2, Stage1)

Когда его первый аргумент равен NULL, COALESCE возвращает значение, указанное в качестве второго аргумента. Иначе, он возвращает первый аргумент без изменений. Этап

Чтобы фактически добавить новый столбец и установить его содержимое:

-- add the new column
ALTER TABLE mytable ADD COLUMN Stage2_New DATE; -- or the correspondig datatype

-- update the values
UPDATE mytable SET Stage2_New = COALESCE(Stage2, Stage1);

Если вам нужно иметь дело с пустыми строками, а также NULL значения:

COALESCE(NULLIF(Stage2, ''), Stage1)
...