0

HP Quality Center에서 SQL 쿼리를 실행하려고하면 오류가 발생합니다. 메시지입니다. "그것은 잘못된 진술을 포함하고 있기 때문에 품질 센터 쿼리를 실행할 수 없습니다 데이터베이스는 오라클입니다 내 쿼리는 다음과 같습니다.HP Quality Center 내에서 "WITH"SQL 문 - 유효하지 않은 문 - Oracle DB

WITH AUDIT AS 
(
SELECT AUDIT_LOG.AU_ENTITY_ID AS DEFECT_ID, 
     MIN(AUDIT_LOG.AU_TIME) AS Date_Deferred, 
     AUDIT_LOG.AU_USER AS UserName_Deferred 
FROM AUDIT_LOG 
INNER JOIN AUDIT_PROPERTIES 
ON AUDIT_LOG.AU_ACTION_ID = AUDIT_PROPERTIES.AP_ACTION_ID 
WHERE AUDIT_LOG.AU_ENTITY_TYPE = 'BUG' 
    AND AUDIT_LOG.AU_ACTION = 'UPDATE' 
    AND AUDIT_PROPERTIES.AP_TABLE_NAME = 'BUG' 
    AND AUDIT_PROPERTIES.AP_FIELD_NAME = 'BG_STATUS' 
    AND AUDIT_PROPERTIES.AP_NEW_VALUE = 'Deferred' 
GROUP BY 
    AUDIT_LOG.AU_ENTITY_ID,AUDIT_LOG.AU_USER 
), 

WITH BUG_LIST AS 
(
SELECT BUG.BG_BUG_ID/*Defect.Defect ID*/, BUG.BG_DETECTION_DATE /*Defect.Detected on Date*/, BUG.BG_USER_01 /*Defect.Application*/, BUG.BG_SEVERITY /*Defect.Severity*/, BUG.BG_STATUS /*Defect.Status*/, BUG.BG_USER_11 /*Defect.Planned Closing Date*/, BUG.BG_DETECTED_BY /*Defect.Detected By*/ 
FROM BUG /*Defect*/ 
WHERE BUG.BG_USER_17 /*Defect.Finding Group*/ = 'UAT' 
ORDER BY BUG.BG_DETECTION_DATE ASC 
) 

SELECT * 
FROM BUG_LIST 
INNER JOIN AUDIT ON AUDIT.DEFECT_ID = BUG_LIST.BG_BUG_ID 

"AUDIT "쿼리가 어떤 시점에서,이 품질 관리의 모든 버그를 찾고 있습니다 , 상태가 "Deferred"로 변경되었습니다. 여기에는 HPQC를 사용하는 모든 팀의 버그가 포함되어 있습니다. "BUG_LIST"쿼리는 "UAT"그룹에서 발견 된 버그를 특별히 찾고 있습니다. 각 쿼리를 개별적으로 실행할 수 있으며 결합하려고합니다. UAT가 발견 한 버그 목록을 얻으려면이 두 가지를 사용하십시오. UAT에서 발견 된 버그에 연관된 지연된 날짜 상태 변경이 있으면이 정보를 표시하고 그렇지 않은 경우 특정 결함에 대해이 정보를 비워 두십시오 ..

내가있는 이유 "지연된"상태로 들어가는 모든 버그는 닫힌 버그처럼 "예정된 종료 날짜"가 없기 때문에 이것을 유혹합니다. 그렇기 때문에 마감 날짜보다는 버그가 연기 상태로 옮겨져서 "가까운 날짜"라고 생각하는 날짜를보고 싶습니다.

HPQC는 "WITH"문을 지원하지 않습니까? 성공적으로 결합하여 이러한 쿼리를 실행할 수있는 방법이 있습니까?

+0

나는 WITH가 9i에 등장했다고 믿는다. – EvilTeach

답변

1

는 한 번만 표시되므로 제거 with을 필요로하는 with BUG_LIST 전에 : 당신은 항상 하나의 from 문 사용하여 하위 쿼리에 이들을 결합 할 수 있습니다

WITH AUDIT AS 
(
SELECT 
AUDIT_LOG.AU_ENTITY_ID AS DEFECT_ID, 
MIN(AUDIT_LOG.AU_TIME) AS Date_Deferred, 
AUDIT_LOG.AU_USER AS UserName_Deferred 
FROM AUDIT_LOG 
INNER JOIN AUDIT_PROPERTIES 
ON AUDIT_LOG.AU_ACTION_ID = AUDIT_PROPERTIES.AP_ACTION_ID 
WHERE AUDIT_LOG.AU_ENTITY_TYPE = 'BUG' AND AUDIT_LOG.AU_ACTION = 'UPDATE' AND AUDIT_PROPERTIES.AP_TABLE_NAME = 'BUG' AND AUDIT_PROPERTIES.AP_FIELD_NAME = 'BG_STATUS' AND AUDIT_PROPERTIES.AP_NEW_VALUE = 'Deferred' 
GROUP BY 
AUDIT_LOG.AU_ENTITY_ID,AUDIT_LOG.AU_USER 
), 

    BUG_LIST AS 
(
SELECT BUG.BG_BUG_ID/*Defect.Defect ID*/, BUG.BG_DETECTION_DATE /*Defect.Detected on Date*/, BUG.BG_USER_01 /*Defect.Application*/, BUG.BG_SEVERITY /*Defect.Severity*/, BUG.BG_STATUS /*Defect.Status*/, BUG.BG_USER_11 /*Defect.Planned Closing Date*/, BUG.BG_DETECTED_BY /*Defect.Detected By*/ 
FROM BUG /*Defect*/ 
WHERE BUG.BG_USER_17 /*Defect.Finding Group*/ = 'UAT' 
ORDER BY BUG.BG_DETECTION_DATE ASC 
) 

SELECT * 
FROM BUG_LIST 
INNER JOIN AUDIT ON AUDIT.DEFECT_ID = BUG_LIST.BG_BUG_ID 

:

select * 
from (your bug_list query here) bl inner join 
    (your audit query here) a 
    on a.defect_id = bl.bd_bug_id 
+0

나는 똑같은 것을 생각하고 있었지만 그것을 업데이트하고 여전히 같은 오류를 받는다. 다른 아이디어? – pkracer

+0

BUG_LIST의 by order는 질의를 오래 실행하는 것 외에는 아무런 효과가 없다는 것에주의하십시오. – EvilTeach

+0

@EvilTeach. . . SQL 엔진이 더 오래 실행되는지 여부는 SQL 엔진에 따라 다릅니다. 대부분의 경우 하위 쿼리에서 'order by'는 무시됩니다. –

0

을 함께 일반적으로 절과 함께 중 하나를 다시 사용할 수 있도록하기 위해 사용됩니다. 이 경우에는 필요하지 않으므로 쿼리를 이와 같이 다시 작성할 수 있습니다. (나는 이것을 테스트 할 입장이 아니다)

SELECT audit.*, bug_list.* 
FROM 
(
    SELECT BUG.BG_BUG_ID/*Defect.Defect ID*/, 
      BUG.BG_DETECTION_DATE /*Defect.Detected on Date*/, 
      BUG.BG_USER_01 /*Defect.Application*/, 
      BUG.BG_SEVERITY /*Defect.Severity*/, 
      BUG.BG_STATUS /*Defect.Status*/, 
      BUG.BG_USER_11 /*Defect.Planned Closing Date*/, 
      BUG.BG_DETECTED_BY /*Defect.Detected By*/ 
    FROM BUG /*Defect*/ 
    WHERE BUG.BG_USER_17 /*Defect.Finding Group*/ = 'UAT' 
) BUG_LIST, 
(
    SELECT AUDIT_LOG.AU_ENTITY_ID AS DEFECT_ID, 
      MIN(AUDIT_LOG.AU_TIME) AS Date_Deferred, 
      AUDIT_LOG.AU_USER AS UserName_Deferred 
    FROM AUDIT_LOG 
    INNER JOIN AUDIT_PROPERTIES 
    ON AUDIT_LOG.AU_ACTION_ID = AUDIT_PROPERTIES.AP_ACTION_ID 
    WHERE AUDIT_LOG.AU_ENTITY_TYPE = 'BUG' 
     AND AUDIT_LOG.AU_ACTION = 'UPDATE' 
     AND AUDIT_PROPERTIES.AP_TABLE_NAME = 'BUG' 
     AND AUDIT_PROPERTIES.AP_FIELD_NAME = 'BG_STATUS' 
     AND AUDIT_PROPERTIES.AP_NEW_VALUE = 'Deferred' 
    GROUP BY 
     AUDIT_LOG.AU_ENTITY_ID,AUDIT_LOG.AU_USER 
) AUDIT 
INNER JOIN AUDIT 
ON AUDIT.DEFECT_ID = BUG_LIST.BG_BUG_ID 
ORDER BY BUG_list.BG_DETECTION_DATE ASC 
+0

의견에 감사드립니다. 쿼리가 다른 오류로 실행됩니다. "ORA-00936 : 표현이 없습니다." – pkracer