Во-первых: я запускаю postgresql 8.2 и тестирую свои запросы на pgAdmin.
У меня есть таблица с некоторыми полями, скажем:
mytable(
id integer,
mycheck boolean,
someText varchar(200));
Теперь я хочу подобный запросна это:
select id,
case when mycheck then (select name from tableA)
else (select name from tableB) end as mySpecialName,
someText;
Я пытался запустить и получить это:
ERROR: CASE types character varying and boolean cannot be matched
SQL state: 42804
И даже попытка обмануть postgresql с помощью
case (mycheck::integer) when 0 then
не сработала.
Итак, мой вопрос: поскольку sql не имеет if, только case, как мне сделать if с логическим полем?