Oracle: sub select with AS, COALESCE, GROUP BY, HAVING CASE WHEN and ORDER BY

All we need is an easy explanation of the problem, so here it is.

I am typing the below code and it is returning me "ORA-00923: FROM keyword not found where expected". What is happening?

    SELECT
       max(alias.id) AS "id",
       (SELECT alias.name FROM EXAM WHERE alias.id = alias.id ) AS "REF",
       alias.name
      
       
       FROM EXAM alias
       GROUP BY alias.name
       ORDER BY alias.name ASC;

Here’s a fiddle: http://sqlfiddle.com/#!4/537e2/1

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

'COLUMN PREFIX' is a scalar string, not a valid (alias) column name. Oracle (flagship, not MySQL) uses Double Quotes for such object names. (The ORA error indicates you are using the flagship product)

Oracle does not distinguish between NULL and ''. anything compared to NULL is unknown. Your case statement will always go to the else clause.

I don’t think Oracle allows you to use a column alias in the having or group by clause. I can’t test right now.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply