I see ... sorry, didn't read your initial question carefully enough.
How about using the DECODE function? Maybe it'll help ...
Code:
UPDATE fms_data
SET valuedkktemp =
(SELECT DECODE (exchange.rates,
0, fms_data.value,
DECODE (fms_data.currency, 'dkk', fms_data.value, exchange.rates * fms_data.value)
FROM exchange, fms_data
WHERE ...)
WHERE ...;
And another suggestion ... watching this, perhaps you could use concatenation:
Code:
UPDATE fms_data
SET valuedkktemp =
(SELECT DECODE (to_char(exchange.rates) || fms_data.currency,
'0dkk', fms_data.value,
exchange.rates * fms_data.value
)
FROM exchange, fms_data
WHERE ...)
WHERE ...;
And, then again, concatenated "rates and currency" could be used in the CASE statement ... couldn't they?