Найти значение последнего столбца NOT NULL в каждой строке таблицы в SQL - PullRequest
1 голос
/ 21 марта 2012

В моей базе данных есть таблица, где я храню адреса. Адрес может быть много строк (от 1 до 6)

Каждая строка адреса хранится в виде отдельного столбца, до 6 столбцов.

Теперь я хочу просмотреть каждую строку в моей таблице и найти значение последнего столбца NOT NULL. Это может быть столбец 3,4,5 или 6.

Мне нужна команда SQL, в которой по строке я получаю значение последнего столбца, которое не равно нулю.

Ответы [ 4 ]

4 голосов
/ 21 марта 2012

Просто используйте COALESCE(), который возвращает первое ненулевое значение:

SELECT    COALESCE(Address6, Address5, Address4, Address3) AS LastNonNullValue
FROM      YourTable
3 голосов
/ 21 марта 2012

Это немного зависит от того, что вы подразумеваете под последним ненулевым столбцом.Я предполагаю, что вы имеете в виду «учитывая этот список, вернуть первый со значением», где список [6, 5, 4, 3].Если это так, используйте это:

SELECT COALESCE(col6, col5, col4, col3)
FROM AddressTable
WHERE rowId = :input

Функция COALESCE() возвращает первое значение, которое разрешается не равным нулю, или ноль, если все значения равны нулю.

2 голосов
/ 21 марта 2012

Используйте команду COALESCE :

SELECT COALESCE(column6, column5, column4, column3) FROM tbl

Обратите внимание на обратный порядок столбцов для выбора первого ненулевого значения.

0 голосов
/ 21 марта 2012

Что-то вроде этого даст вам номер столбца:

select 
    left(coalesce('0'+address6, '6'+address5, '5'+address4, '4'+address3, '3'+address2, '2'+address1, '1'),1)
from @Address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...