Это можно сделать в Oracle 8.0 и более ранних версиях (т. Е. До введения CASE
) следующим математическим приемом:
SELECT DECODE(NUMBER_OF_ITEMS-1+ABS(NUMBER_OF_ITEMS-1), 0, 1, NUMBER_OF_ITEMS) AS TOTAL
FROM xxx
... что эквивалентно max(1,number_of_items)
.
Замените три 1
выше с другим значением, как требуется.
Это работает, потому что number_of_items - 1
становится нулевым или отрицательным, когда number_of_items меньше 1. И, как правило, x + abs(x)
всегда равно нулю, когда x <= 0, поэтому первая опция <code>decode совпадает.
Нам это нужно, потому что некоторые из наших (сторонних) клиентов все еще могут использовать Oracle 8.0, и было бы много дней, чтобы выяснить, будет ли последний клиент окончательно обновляться!