Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > помогите со сложным запросом - case


Автор: dimnast 10.2.2006, 12:50
Подскажите такую вещь... Есть запрос:
Код
select istr.val as Num, id.val as Data, ii.val as Nal (case Nal then ‘неподписан’ when 0 else ‘подписан’ end)
from index_string istr right join index_date id  on (istr.id_object = id.id_object and id.id_pok=:id_pok1) right join  index_integer  ii on (istr.id_object = ii.id_object and ii.id_pok=:id_pok2)  
where  
(istr.id_object =:ID_OBJECT)
and  
(istr.id_pok=:id_pok)
and  
(istr.idlevel=:idlevel)

Необходимо, чтобы при значении поля Nal (тип - Integer) = 0 - этот ноль заменяло на надпись
‘неподписан’, а при 1 - ‘подписан’.
Мне подсказали использовать case, однако я, наверно, неправильно что-то записал, поскольку выдает ошибку в запросе... Что не так?
smile

Автор: LSD 10.2.2006, 12:59
dimnast почитай правила наверху раздела!
1. Используй теги code.
2. Что за база используется?

Автор: dimnast 10.2.2006, 13:08
LSD
Про правила понялsmile

База - .gdb. Работаю через IB-компоненты

Автор: LSD 10.2.2006, 14:33
GDB - это не база, это расширение файла. База у тебя Interbase.

Так должно сработать:
Код
select istr.val as Num, id.val as Data, 
  case ii.val
    when 0 then 'неподписан'
    when 1 then 'подписан'
    else 'ошибка'
  end as Nal
from index_string istr right join index_date id  on (istr.id_object = id.id_object and id.id_pok=:id_pok1) right join  index_integer  ii on (istr.id_object = ii.id_object and ii.id_pok=:id_pok2)    
where    
(istr.id_object =:ID_OBJECT)    
and    
(istr.id_pok=:id_pok)    
and    
(istr.idlevel=:idlevel)

Автор: dimnast 10.2.2006, 16:01
LSD

Большое спасибо! Работает как часыsmile
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)