2010-03-04 2 views
6

두 개의 쿼리 결과를 결합하려고합니다. 그러나 나는 다음과 같은 오류를 받고 있어요 :UNION을 두 번 선택하면 'SQL 오류 : ORA-00907 : 오른쪽 괄호가 누락되었습니다.'

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

여기 내 쿼리 :

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

, 아니 괄호 불일치가 없다. – Kangkan

답변

11

가 중첩 된 쿼리에서 ORDER BY을 제거

것 같다
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

@ cedar715 : 'Oracle'은 중첩 쿼리에서 'ORDER BY'를 지원하지 않기 때문에. 결과 순서가 보장되지 않습니다. – Quassnoi

+0

왜?! 나는 세트 A가 세트 B (비 유적으로) 위에 나타나도록 두 개의 미리 정렬 된 결과 세트를 결합하고자했습니다. 그러나 집합 A에 대해서만 ORDER BY를 적용 할 수 있습니다. 집합 B에 ORDER BY를 적용하려고하면 '오른쪽 괄호가 누락되었습니다'라고 표시됩니다. 그럼 세트 A에서 왜 허용됩니까? 최종 주문을하기 위해 주문 키를 입력하지 않고 두 세트를 개별적으로 주문할 수 있습니까? – ADTC

+0

마음에 들지 않았는데,'SELECT * FROM (/ * ORDER BY * /로 B 쿼리 설정)'과 같은 쿼리를 중첩하면 B를 순서대로 설정할 수 있으며 오류가 발생하지 않는다고 생각했습니다. D – ADTC

관련 문제