Вы можете присоединиться к нескольким условиям для каждого случая:
select c.sur, c.fam, h.horoscope from customer c
inner join horoscope h
on (c.fam = h.fam and c.sur = h.sur) or
(c.fam = h.fam and h.sur is null and not exists(
select 1 from horoscope
where fam = c.fam and sur = c.sur
)
)
.
Ну, в случае известного числа столбцов можно сделать:
SELECT
MyName + " ->"
+ case OPTION1 when 1 then ' OPTION1' else '' end
+ case OPTION2 when 1 then ' OPTION2' else '' end
+ ...
FROM
Table
Если столбцы неизвестны при создании запроса - я, вероятно, все еще пошел бы тем путем с некоторым динамично созданным SQL. Преимущество состоит в том, что код, вероятно, делает то, что Вы хотите и очень просты.
Вы могли создать динамический оператор с помощью системного каталога:
Так как Вы не входите в определенные потребности того, почему Вы хотите смочь сделать это, я не могу быть уверен, но обычно когда я вижу этот вид вопроса существует две вещи, о которых я думаю:
Необходимо нормализовать базу данных. Возможно, "Option1", "Option2" и т.д. не имеют ничего общего, но существует также хороший шанс, что они - повторяющаяся группа в Вашей таблице.
Дисплей дескриптора выходит в слое дисплея Вашего приложения - т.е. фронтэнд, не база данных.
Как я сказал, возможно, они не применяются в Вашем случае по некоторой определенной причине, но на него от того, походит, что у меня есть чтение Вашего вопроса.