在Merging Two查询HP ALM方面需要帮助

时间:2017-11-16 13:21:14

标签: mysql sql alm

我在HP ALM中有两个不同的查询,但我想合并并将其合并为一个。我在SQL查询方面不是很好,所以我在合并查询时遇到了困难。

查询1:获取测试人员的执行次数

Select
 TESTCYCL.TC_ACTUAL_TESTER as 'Tester',
 sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total',
 sum(case when TC_Status = 'Passed' then 1 else 0 end) as 'Pass',
 sum(case when TC_Status = 'Failed' then 1 else 0 end) as 'Fail',
 sum(case when TC_Status = 'Blocked' then 1 else 0 end) as 'Blocked',
 sum(case when TC_Status In('Not Completed','Defferred','N/A') then 1 else 0 end) as 'Others'

From  TESTCYCL
Where
 TESTCYCL.TC_EXEC_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 And
 TESTCYCL.TC_ACTUAL_TESTER in ('Username1')
 Group by TC_ACTUAL_TESTER

查询2:通过测试人员提出缺陷

SELECT
 BG_DETECTED_BY,
 Sum(case when BG_Status Not in ('Closed','Defect Resolved','Rejected')then 1 else 0 end) as 'Defect Raised'
 FROM BUG
 Where BUG.BG_DETECTED_BY in ('username1')
 AND BUG.BG_DETECTION_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
 Group by BG_DETECTED_BY

我尝试过内连接/左连接但是用户引发的缺陷计数不匹配

问题3:我尝试过:

 Select
  TESTCYCL.TC_ACTUAL_TESTER as 'Tester',
  sum(case when TC_Status In('Blocked','Passed','Failed','Not Completed') then 1 else 0 end) as 'Total',
  sum(case when TC_Status = 'Passed' then 1 else 0 end) as 'Pass',
  sum(case when TC_Status = 'Failed' then 1 else 0 end) as 'Fail',
  sum(case when TC_Status = 'Blocked' then 1 else 0 end) as 'Blocked',
  sum(case when TC_Status In('Not Completed','Defferred','N/A') then 1 else 0 end) as 'Others',
  Sum(case when BG_Status Not in ('Closed','Defect Resolved','Rejected')then 1 else 0 end) as 'Defect Raised'

From  TESTCYCL 
Left Join BUG 
  on TESTCYCL.TC_ACTUAL_TESTER =  BUG.BG_DETECTED_BY 
 AND  BUG.BG_DETECTION_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
Where TESTCYCL.TC_EXEC_DATE = CAST(CURRENT_TIMESTAMP AS DATE)
  And TESTCYCL.TC_ACTUAL_TESTER in ('username1')
Group by TC_ACTUAL_TESTER

Out如下所述:

Expected Output:
Tester   Total Execution  Passed  Failed  ... Defect Raised
  A          5              3       2             10

Actual Output:
Tester   Total Execution  Passed  Failed  ... Defect Raised
  A          56              3       2             45

1 个答案:

答案 0 :(得分:0)

问题是你正在对产品笛卡尔进行COUNT()。而不是连接结果。

现在你正在做

   COUNT(A*B) instead of COUNT(A) || COUNT(B)

一般示例,如果您有两个查询

SELECT * FROM A (ex: 10 rows)
SELECT * FROM B (ex: 10 rows)

您需要的是:

 SELECT temp1.*, temp2.*
 FROM (SELECT * FROM A) as temp1
 JOIN (SELECT * FROM B) as temp2
   ON temp1.ID = temp2.ID