Мой оператор UPDATE идет по строкам:
UPDATE customer
SET forenames=ot.forenames,
surname =
CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,
middlename =
CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,
FROM order_transaction ot
WHERE customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
Вышеупомянутые работы. Он в основном проверяет, является ли поле в другой таблице NULL или нет, а затем обновляет "фамилию" клиента и "имя пользователя" соответственно. Как вы можете видеть выше, я дважды повторял один и тот же оператор CASE. Мой вопрос: есть ли способ указать оператор CASE только один раз?
Дело в том, что если я скажу, что хочу обновить 10 полей на основе определенного условия, нужно ли включать 10 аналогичных условий CASE? Или можно улучшить SQL, чтобы иметь только один CASE и 10 обновлений полей в предложениях WHEN/ELSE?
(Я использую базу данных Postgresql 8.2, но я считаю, что это стандартный SQL).
Большое спасибо, Риши