0

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

6
  • You probably should study the difference between quoted identifiers and character literals. Also, check this out.
    – mustaccio
    Commented Mar 31, 2022 at 17:22
  • I visited the link but could not resolve the issue.
    – Boneman
    Commented Mar 31, 2022 at 18:10
  • @mustaccio do You can help me?
    – Boneman
    Commented Mar 31, 2022 at 18:50
  • What is the subquery supposed to do? You already have the alias.name column, your GROUP BY is based on it. Why do you need an extra subquery? Commented Mar 31, 2022 at 19:12
  • 1
    What do you want us to make work? The subquery doesn't make sense. WHERE alias.id = alias.id will always be true. So do you want every row from exam? Commented Mar 31, 2022 at 22:17

1 Answer 1

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.