В моей базе данных Oracle у меня есть таблица с именем Customers. Есть поля для имени, почтового индекса, города и т. Д., Но есть также поля для invoicename, invoicezip и invoicecity. Для некоторых записей специфичные для счета поля не установлены, и в этом случае метод счета должен использовать информацию из имени, почтового индекса и города.
Сейчас я использую следующий запрос:
select
case when c.InvoiceName is null then c.Name else c.InvoiceName end as Name,
case when c.InvoiceName is null then c.Zip else c.InvoiceZip end as Zip,
case when c.InvoiceName is null then c.City else c.InvoiceCity end as City
<...>
from
Customers c
where
Accountnumber=:accountnumber
Обратите внимание, что проверка выполняется только для InvoiceName. Если это значение установлено, я хочу вернуть все поля, относящиеся к счету, если нет, я хочу вернуть все поля, не относящиеся к счету.
Что бы я хотел бы сделать, это что-то вроде этого
select
case when c.InvoiceName is not null
then
c.InvoiceName as Name,
c.InvoiceZip as Zip,
c.InvoiceCity as City
<...>
else
c.Name,
c.Zip,
c.City
<...>
end
from
customers c
Есть ли способ сделать это или что-то подобное?