1

HP Quality Center 内で SQL クエリを実行しようとすると、エラーが発生します。メッセージは「無効なステートメントが含まれているため、Quality Center はクエリを実行できません。データベースは Oracle です。私のクエリは次のとおりです。

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」クエリは、ある時点でステータスが「保留」に変更された QC のバグを探します。これには、HPQC を使用するすべてのチームからのバグが含まれています。「BUG_LIST」クエリは、「UAT」グループによって発見されたバグを特に探しています。各クエリを個別に実行して、「UAT」で見つかったバグのリストを取得できるように 2 つを組み合わせようとしています。UAT によって検出されたバグに関連付けられた延期日のステータス変更がある場合は、この情報を表示し、そうでない場合は、特定の欠陥についてこの情報を空白のままにします。

私がこれを試みている理由は、「保留」ステータスになるバグには、クローズされたバグのように「予定されたクローズ日」がないためです。このため、終了日ではなく、バグが延期ステータスになった日付を確認して、それを「終了日」と見なしたいと思います。

HPQC は「WITH」ステートメントをサポートしていませんか? これらのクエリをうまく組み合わせて実行する方法はありますか?

4

2 に答える 2

1

withは 1 回だけ表示する必要があるため、 withBUG_LIST の前を削除します。

   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

サブクエリを使用して、これらをいつでも単一のfromステートメントに組み合わせることができます。

select *
from (your bug_list query here) bl inner join
     (your audit query here) a
     on a.defect_id = bl.bd_bug_id
于 2012-12-05T21:20:47.087 に答える
0

WITHは通常、 with 句の 1 つを再利用できるようにするために使用されます。この場合は不要なので、クエリを次のように書き直すことができます。(私はこれをテストする立場にありません)

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
于 2012-12-05T22:01:04.940 に答える