2015-03-16 2 views
0

Наша база данных отслеживает только 5 платежных платежей, полученных каждый месяц. Как я могу написать инструкцию select, которая будет выглядеть последовательно в каждую полученную дату платежа и если есть введенная дата для перехода к следующему платежу и т. Д. ... затем в конце концов встретит дату с пустым полем и сообщит, что Дата?Сообщить о следующей дате в последовательности

Я пробовал следующее заявление о ситуации, но думаю, что я нахожусь на неправильном пути;

select db.identifier, 
case when recdate1 is not null then recdate1 
when recdate2 is not null then recdate2 
when recdate3 is not null then recdate3 end 

из БД

+1

Какая СУБД вы используете? Postgres? Oracle? –

ответ

3

Вы должны использовать функцию COALESCE для этого. Функция COALESCE примет n количество полей ввода и вернет первое поле ввода NOT NULL слева направо. Другими словами, если вы перегруппируете поля recdate из recdate1 для возврата 5, он вернет первый, который не является NULL.

Это код, который требуется для этого.

SELECT db.identifier 
     , COALESCE(recdate1, recdate2, recdate3, recdate4, recdate5) AS recdate 
    FROM mytable 

Для получения дополнительной информации обратитесь к функции COALESCE. Надеюсь это поможет.

https://msdn.microsoft.com/en-us/library/ms190349.aspx

+0

Это сработало .... Большое спасибо rhholt! – Benjo

+0

Добро пожаловать, рад, что смогу помочь. – rhholt

+0

Можете ли вы отметить ответ, если это ответили на ваш вопрос? Спасибо. – rhholt

Смежные вопросы