Have a quick browse through this thread.
The solution has it’s own problem — using a CASE expression to workout the earlier of two dates is too complex. As I wrote here, “There are around 170+ built-in SQL functions in Oracle 9i. You don’t have to learn them all, but you do need to know which ones exist. If you think that a particular built-in function ought to exist then it probably already does.”
The required function is LEAST(). Not only would the intent of the SQL be more clear and the code more concise, I bet that the performance difference could be benchmarked also. As a rule-of-thumb* the built-in functions are going to be faster than anything that you jury rig to do the same thing.
* I think this is my first mention of RoT. Hooray!