Я пытаюсь создать столбец, значение которого условно основано на уже указанных столбцах БД.
У меня есть 6 столбцов:
ColumnA
ColumnB
ColumnC
ColumnD
ColumnE
ColumnF
У меня есть запрос, который я использую, когда создаю этот столбец CUSTOMCODE
, который будет определяться на основе значений 6 столбцов, в зависимости от того, какой из них равен нулю или нет.
Я использовал оператор CASE
, чтобы попытаться сгенерировать нужные мне результаты, но есть несколько строк, которые возвращают ноль. Логика для моего утверждения кейса следующая
CASE
WHEN ColumnA IS NOT NULL and ColumnB IS NOT NULL
THEN ColumnA + '-' + ColumnC + '-' + ColumnD + '-' + ColumnB
WHEN ColumnA IS NOT NULL and ColumnB IS NULL
THEN ColumnA + '-' + ColumnC + '-' + ColumnD
WHEN ColumnE IS NOT NULL
THEN ColumnE + '-' + ColumnF
END AS CUSTOMCODE
Примечание для данных в этой базе данных, в этом примере ColumnB имеет значение NULL для каждой строки.
Когда этот запрос выполняется, для первой строки, где ColumnA, ColumnC, and ColumnD
не равны NULL, он правильно возвращает первый случай, и CUSTOMCODE приводит к ненулевому значению.
Для второй строки, где одинаковые ColumnA, ColumnC, and ColumnD
также не равны NULL, он возвращает значение NULL для CUSTOMCODE, и я не уверен, почему.
И как наш бэкэнд структурирован и как поступают данные, тогда, если эти 3 столбца равны нулю, тогда ColumnE and ColumnF are not null
, однако для строк, где это имеет место, это также приводит к тому, что CUSTOMCODE равен NULL.
Есть ли что-то, чего мне не хватает в CASE Statement, или мне нужно реструктурировать это или сделать что-то еще?