Вернуть один из двух столбцов в представлении - в зависимости от того, какой из них не нулевой - PullRequest
4 голосов
/ 05 марта 2011

У меня есть таблица с тремя столбцами:

ColumnA          ColumnB         ColumnC
AAA               NULL            123
BBB               222             NULL
CCC               NULL            NULL

Я хотел бы создать инструкцию SELECT, которая будет возвращать ColumnA, а затем второй столбец, в котором будет отображаться значение ColumnB, если только ColumnB не равен нулю; в противном случае он покажет значение ColumnC, даже если это NULL. Могу ли я использовать заявление IF для этого? Что-то вроде:

SELECT ColumnA, 
IF(ColumnB IS NULL, ColumnC, ColumnB)
FROM table

** Если я получу эту работу, следующим шагом будет возвращение значения объединенного столбца вместо ColumnB. По сути, оператор IF будет

IF(table.ColumnB IS NULL, table.ColumnC, table2.ColumnD)

Ответы [ 2 ]

13 голосов
/ 05 марта 2011

Использование COALESCE

SELECT ColumnA, COALESCE(ColumnB, ColumnC) as 'Value'

2 голосов
/ 05 марта 2011

Читая до конца вашего вопроса, звучит так, как будто вам нужно использовать CASE

CASE WHEN table.ColumnB IS NULL 
     THEN table.ColumnC 
     ELSE table2.ColumnD 
END AS Whatever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...