Сравните несколько столбцов, которые могут быть NULL - PullRequest
0 голосов
/ 28 июня 2018

Я хочу сравнить набор столбцов и решить:

  1. Если все столбцы, отличные от NULL, равны
  2. Если столбцы, отличные от NULL, не равны
  3. Если все столбцы NULL

Пример ввода и вывода:

Inn: 'NO', NULL, 'GB', 'NO', 'NO'
Out: 1) FALSE; 2) TRUE; 3) FALSE
----
Inn: 'NO', NULL, 'NO', 'NO', 'NO'
Out: 1) TRUE; 2) FALSE; 3) FALSE
----
Inn: NULL, NULL, NULL, NULL, NULL
Out: 1) FALSE; 2) FALSE; 3) TRUE

Количество столбцов, которые мне нужно протестировать, довольно мало, поэтому логические утверждения для сравнения каждого из них немного громоздки.

Система: база данных Teradata SQL

1 Ответ

0 голосов
/ 28 июня 2018

Вы бы использовали выражение case. Может быть:

select (case when a is null and b is null and c is null and d is null
             then 'all null'
             when coalesce(a, b, c, d) = coalesce(b, c, d, a) and
                  coalesce(a, b, c, d) = coalesce(c, d, b, a) and
                  coalesce(a, b, c, d) = coalesce(d, a, b, c)
             then 'all non-nulls are equal'
             else 'unequal'
         end);
...