es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta principal select junto con subconsulta que tiene “select * de dual”.

Tengo la siguiente consulta que tiene una subconsulta para seleccionar de ‘dual’. Ambos resultados de la consulta principal y la subconsulta deben mostrarse en la salida.

SELECT
a.ROW_EXISTS AS CLIENT_EXIST,
c.AP_Before AS AP_before,
c.AP_TIMESTAMP AS AP_TIMESTAMP,
cd.AAM_FLAG AS AAM_FLAG,
cd.SSM_FLAG AS SSM_FLAG
FROM 
(
select
case when exist (select 1 from c.clients where client_id='c-001' then 'Y' else 'N' end as ROW_EXISTS
from dual
) AS a
INNER JOIN CLIENT_DYN cd ON c.CLIENT_ID = cd.CLIENT_ID
WHERE c.CLIENT_ID = 'c-001';

Se encuentra un error ORA-00933: SQL command not properly ended cerca de la línea ) AS A cuando se ejecuta la consulta.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay un error de sintaxis en la consulta proporcionada. La consulta correcta debería ser la siguiente:

    SELECT
    a.ROW_EXISTS AS CLIENT_EXIST,
    c.AP_Before AS AP_before,
    c.AP_TIMESTAMP AS AP_TIMESTAMP,
    cd.AAM_FLAG AS AAM_FLAG,
    cd.SSM_FLAG AS SSM_FLAG
    FROM 
    (
    select case 
        when exists (select 1 from c.clients where client_id='c-001') 
        then 'Y' 
        else 'N' 
    end as ROW_EXISTS
    from dual
    ) a
    INNER JOIN CLIENT_DYN cd ON c.CLIENT_ID = cd.CLIENT_ID
    WHERE c.CLIENT_ID = 'c-001';
    

    El problema estaba en la ubicación del alias para la subconsulta. Debe colocarse después del paréntesis de cierre de la subconsulta, no antes de él. Además, la sintaxis para la instrucción case de la subconsulta era incorrecta: la función exist debería ser exists, y el paréntesis de cierre estaba en el lugar equivocado.

    Con la consulta corregida, se ejecutarán tanto la consulta principal como la subconsulta y se mostrarán los resultados en la salida. La subconsulta devolverá una sola fila con ‘Y’ o ‘N’ en la columna ROW_EXISTS, dependiendo de si existe un cliente con ID ‘c-001’ en la tabla c.clients. La consulta principal recuperará columnas adicionales de la tabla CLIENT_DYN para el cliente coincidente.

Comments are closed.