2010-03-04 8 views
6

Estoy intentando UNIONAR los resultados de dos consultas. Pero estoy consiguiendo el error siguiente:UNION en dos selecciones da 'SQL Error: ORA-00907: falta el paréntesis correcto'

Error at Command Line:9 Column:81 
Error report: 
SQL Error: ORA-00907: missing right parenthesis 
00907. 00000 - "missing right parenthesis" 

Aquí es mi consulta:

SELECT application_id, clicks, datee, client_id FROM(
(select 
    APPL_CD AS application_id, 
    count(*) as clicks, 
    to_date((to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy')), 'dd-mm-yyyy') as datee, 
    ALRT_RSPNS_FROM_CLIENT_ID AS client_id 
from ALRT_PLATFORM_ALRT_HSTRY 
    where ACTN_TAKE_CD is not null 
    group by to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy'), APPL_CD, ALRT_RSPNS_FROM_CLIENT_ID order by datee) 
UNION ALL 
(select 
    APPL_CD AS application_id, 
    count(*) as clicks, 
    to_date((to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy')), 'dd-mm-yyyy') as datee, 
    ALRT_RSPNS_FROM_CLIENT_ID AS client_id 
from ALRT_PLATFORM_ALRT 
    where ACTN_TAKE_CD is not null 
    group by to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy'), APPL_CD, ALRT_RSPNS_FROM_CLIENT_ID order by datee) 
) 
+0

Parece, no existe un desajuste entre paréntesis. – Kangkan

Respuesta

11

Retire la ORDER BY de las consultas anidadas:

SELECT application_id, clicks, datee, client_id FROM(
(select 
    APPL_CD AS application_id, 
    count(*) as clicks, 
    to_date((to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy')), 'dd-mm-yyyy') as datee, 
    ALRT_RSPNS_FROM_CLIENT_ID AS client_id 
from ALRT_PLATFORM_ALRT_HSTRY 
    where ACTN_TAKE_CD is not null 
    group by to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy'), APPL_CD, ALRT_RSPNS_FROM_CLIENT_ID) 
UNION ALL 
(select 
    APPL_CD AS application_id, 
    count(*) as clicks, 
    to_date((to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy')), 'dd-mm-yyyy') as datee, 
    ALRT_RSPNS_FROM_CLIENT_ID AS client_id 
from ALRT_PLATFORM_ALRT 
    where ACTN_TAKE_CD is not null 
    group by to_char(ACTN_TAKE_DATA_TM, 'dd-mm-yyyy'), APPL_CD, ALRT_RSPNS_FROM_CLIENT_ID) 
) 
+0

@ cedro715: porque 'Oracle' no admite' ORDER BY' en las consultas anidadas. El orden resultante no está garantizado de todos modos. – Quassnoi

+0

¿POR QUÉ? Quería combinar dos conjuntos de resultados pre ordenados de modo que el conjunto A aparezca encima del conjunto B (en sentido figurado). Pero solo puedo aplicar ORDER BY para el conjunto A. Si intento aplicar ORDER BY en el conjunto B, dice 'missing parent parenthesis'. ¿Por qué está permitido en el conjunto A entonces? ¿Cómo puedo ordenar ambos conjuntos por separado sin introducir una clave de pedido para hacer el pedido final? – ADTC

+0

No importa, pensé que si anidaba la consulta como 'SELECT * FROM (/ * establece la consulta B con ORDER BY * /)' puede haber ordenado B, y no dará el error: D – ADTC

Cuestiones relacionadas