Oracle/PLSQL: mensaje de error ORA-22818

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: mensaje de error ORA-22818

Aprenda por qué y cómo resolver los mensajes de error ORA-22818 en Oracle.

describir

Cuando encuentra un error ORA-22818, aparece el siguiente mensaje de error:

  • ORA-22818: expresión de subconsulta no permitida aquí

razón

Intentó incluir una subconsulta en la cláusula GROUP BY.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Este error ocurre cuando intenta ejecutar una instrucción SQL que contiene una subconsulta en la cláusula GROUP BY.

Por ejemplo, si intenta ejecutar la siguiente instrucción SELECT:

SELECT SUM(price),
CASE WHEN category = 'Vegetables' THEN
  (SELECT suppliers.supplier_name
   FROM suppliers)
ELSE
  'Not applicable'
END sname
FROM products
GROUP BY CASE WHEN category = 'Vegetables' THEN
           (SELECT suppliers.supplier_name
            FROM suppliers)
         ELSE
           'Not applicable'
         END;

Recibirá el siguiente mensaje de error:

Elimine las siguientes subconsultas (en la instrucción CASE) de la cláusula GROUP BY.

(SELECT suppliers.supplier_name
    FROM suppliers)

Por ejemplo, puede escribir una consulta de la siguiente manera:

SELECT SUM(price),
CASE WHEN category = 'Vegetables' THEN
  'Safeway'
ELSE
  'Not applicable'
END sname
FROM products
GROUP BY CASE WHEN category = 'Vegetables' THEN
           'Safeway'
         ELSE
           'Not applicable'
         END;