2009-09-18 3 views
0

UNION 문을 사용하지 않고도 다음 쿼리를 다시 작성할 때 도움이 될 수 있습니까?UNION이없는 SQL 쿼리

(
    SELECT 
    A.QRYNAME0 "Query Name", 
    A.OPRID, 
    A.DESCR, 
    A.QRYTYPE, 
    TO_CHAR(A.CREATEDTTM,'DD-MON-YYYY HH24:MI:SS') "Created On", 
    TO_CHAR(A.LASTUPDDTTM,'DD-MON-YYYY HH24:MI:SS') "Last Updated On", 
    B.EXECCOUNT "No of Times Executed", 
    B.AVGEXECTIME, 
    TO_CHAR(B.LASTEXECDTTM,'DD-MON-YYYY HH24:MI:SS') "Last Executed On" 
    --TO_CHAR(SUBSTR(A.DESCRLONG,1,50))"Long Description" 
    FROM 
    PSQRYDEFN A, 
    PSQRYSTATS B 
    WHERE 
    A.QRYNAME = B.QRYNAME and 
    a.oprid = b.oprid 
) 
UNION 
(
    SELECT 
    A.QRYNAME "Query Name", 
    A.OPRID, 
    A.DESCR, 
    A.QRYTYPE, 
    TO_CHAR(A.CREATEDTTM,'DD-MON-YYYY HH24:MI:SS') "Created On", 
    TO_CHAR(A.LASTUPDDTTM,'DD-MON-YYYY HH24:MI:SS') "Last Updated On", 
    0 "No of Times Executed", 
    0, 
    NULL "Last Executed On" 
    --TO_CHAR(SUBSTR(A.DESCRLONG,1,50)) "Long Description" 
    FROM 
    PSQRYDEFN A 
    WHERE 
    NOT EXISTS (
     SELECT 1 
     FROM PSQRYSTATS B 
     WHERE a.qryname = b.qryname and a.oprid = b.oprid 
    ) 
) 
+1

테이블을 작성하는 데 사용 된 DDL 문을 제공하고 쿼리의 원하는 결과를 설명하는 경우에만. –

+0

더 읽기 쉬운 방식으로 형식을 지정하고 차이점을 지적하면 답장을받을 확률이 더 높아집니다. –

+1

재 형식화를 시도했습니다. 지금은 더 좋을지 모르겠다. 나는 너무 많은 SQL을 직접 작성하지 않는다. – Joey

답변

1

왼쪽 외부 조인을 시뮬레이트하는 것처럼 보입니다. 내가하고 ISNULL/NVL 기능을 결합하지만 SQL의 방언을 모른 채 당신이 왼쪽 외부 찾고있는 생각은 ANSI 호환

FROM PSQRYDEFN A 
LEFT OUTER JOIN PSQRYSTATS B ON A.QRYNAME=B.QRYNAME AND A.oprid=B.oprid 
+0

예, 외부 조인에 대해 읽는 것이 좋습니다. –

+0

... 및 새 조인 구문 –

0

을, 더 나은

A.QRYNAME *= B.QRYNAME and 
a.oprid *= b.oprid 

또는 시도하고 테이블이 될 수 없습니다 당신은 LEFT OUTER 두 테이블로 가입해야합니다, 플러스 당신이 제로에 null을 변환 NVL과 EXECCOUNT 및 EXECAVGTIME 값을 난도질해야처럼 정확한

SELECT 
    A.QRYNAME0 "Query Name", 
    A.OPRID, 
    A.DESCR, 
    A.QRYTYPE, 
    TO_CHAR(A.CREATEDTTM,'DD-MON-YYYY HH24:MI:SS') "Created On", 
    TO_CHAR(A.LASTUPDDTTM,'DD-MON-YYYY HH24:MI:SS') "Last Updated On", 
    nvl(B.EXECCOUNT, 0) "No of Times Executed", 
    nvl(B.AVGEXECTIME, 0) 
    nvl(TO_CHAR(B.LASTEXECDTTM,'DD-MON-YYYY HH24:MI:SS'), null) "Last Executed On" 
    --TO_CHAR(SUBSTR(A.DESCRLONG,1,50))"Long Description" 
FROM 
    PSQRYDEFN A left outer join PSQRYSTATS B 
    on A.QRYNAME = B.QRYNAME and 
     a.oprid = b.oprid 
+0

답장을 보내 주셔서 감사합니다. 쿼리를 확인하고이 방법으로 사용할 수 있는지 여부를 알려주십시오. (SELECT DISTINCT A.QRYNAME "쿼리 이름", A.OPRID, A.DESCR , A. QRYTYPE, TO_CHAR (A.CREATEDTTM, 'DD-MON-YYYY HH24 : MI : SS') "만든 날짜", TO_CHAR (A.LASTUPDDTTM, 'DD-MON-YYYY HH24 : MI : SS') "마지막으로 업데이트 됨", 0 "실행 시간 없음", 0, NULL "마지막 실행 시간" --TO_CHAR (SUBSTR (A.DESCRLONG, 1,50)) "설명이 긴" FROM PSQRYDEFN A, PSQRYSTATS B 여기서 A.QRYNAME = B.QRYNAME 및 a.oprid = b.oprid 또는 존재하지 않음 (선택 1 FROM PSQRYSTATS B 여기서 a.qr yname = b.qryname 및 a.oprid = b.oprid)) –

+0

어쩌면, 나는 그것을 시도 할 것이다 -. 나는 외부 조인이 또는에서보다 읽기가 훨씬 쉽다는 것을 알기 때문에 여기에 확실하지 않다. 새로운 쿼리에서 나는 주위에 괄호를 추가해야한다고 생각합니다 (예 : ... 및 ...) 또는 .... – Mark

0

보인다.