2015-12-14 4 views
0

У меня есть база данных с тремя полями: тип брони, номер брони и дата бронирования. Некоторые значения:Использование случая для выбора поля в зависимости от значения другого поля

Bookingtype Bookingnum date 
main  0001  10-11-15 
main  0002  09-11-15 
sub   0002a  12-12-15 

Мне нужно написать оператор выбора для даты для каждой записи. Но когда тип бронирования является суб, он должен получить дату с основной даты бронирования. в этом случае бронирование 2a должно быть датировано 09-11-5. Я использую postgres 9.3 и упростил поля, чтобы другим было легче понять, что мне нужно.

ответ

1

Если предположить, что ваши основные числа всегда первые 4 символа Bookingnum (четкое определение отсутствует):

SELECT b.Bookingtype, b.Bookingnum 
    , COALESCE(main.date, b.date) AS date 
FROM bookings b 
LEFT JOIN bookings main ON b.Bookingtype = 'sub' 
         AND main.Bookingnum = left(b.Bookingnum, 4); 

Я бы рассмотреть foreign key колонки (самореференцию) в основной строке.

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