Логическое возвращающее значение - PullRequest
1 голос
/ 19 сентября 2011

Мне нужно объединить две таблицы.Если столбец b пуст, то соединение будет выполнено для столбца c.Если не объединение будет в столбце b.

Это работает, как мне нужно.Но я подозреваю, что мне чего-то не хватает, поскольку это выглядит немного запутанным для того, что он делает:

select *
from the_table t
inner join another_table a
   on
   case when a.b = '' then
      case when t.c = a.c then 1 else 0 end
   else
      case when t.b = a.b then 1 else 0 end
   end = 1

Я что-то упускаю?

1 Ответ

7 голосов
/ 19 сентября 2011
ON (a.b = '' AND t.c = a.c) OR (a.b <> '' AND t.b = a.b)
...