It seems that using a derived column in a SELECT statement, without a table alias can cause problems.
The following base statement executes error free:
SELECT *FROM MyTable
This statement errors with ORA-00936: missing expression:
SELECT TO_DATE(B, 'DD-MON-YYYY') - TO_DATE(A, 'DD-MON-YYYY'), *FROM MyTable
This slightly modified statement will execute as expected:
SELECT TO_DATE(B, 'DD-MON-YYYY') - TO_DATE(a, 'DD-MON-YYYY'), mt.*FROM MyTable mt
Initially, the idea of changing the order of the fields came to mind; it didn’t help. After adding in the alias and checking with a colleague – it worked. I don’t know why the derived column causes problems, however I thought it interesting none the less.