2014-01-15 68 views
0

我有一个查询的正常工作:SQL查询添加计数信息

SELECT 
b.BG_BUG_ID as Defect 
FROM 
BUG b 
JOIN LINK l ON b.BG_BUG_ID = l.LN_BUG_ID 
JOIN TEST t ON l.LN_ENTITY_ID = t.TS_TEST_ID 
WHERE 
(b.BG_STATUS = 'Open') OR 
(b.BG_STATUS LIKE '%Re%') OR 
(b.BG_STATUS LIKE '%En%') OR 
(b.BG_STATUS = 'Fixed') OR 
(b.BG_STATUS = 'New') AND 
(l.LN_ENTITY_TYPE = 'TEST') 
ORDER BY b.BG_BUG_ID ASC 

输出是:

DEFECT 
------ 
2222 
3333 
4444 

现在我想添加一个单独的一行的t时的总人数。 TS_TEST_ID每个b.BG_BUG_ID的缺陷因此,它应该是这样的:

DEFECT Number_of_test_ids 
------ ------------------ 
2222 26 
3333 14 
4444 55 

我不知道在哪里添加SELECT COUNT(?)为了产生结果?

+0

'b.BG_BUG_ID as缺陷,计数(*)...'然后在排序之前:添加'GROUP BY b.BG_BUG_ID' – xQbert

回答

0
SELECT 
b.BG_BUG_ID as Defect, count(distinct t.TS_TEST_ID) as Number_of_test_IDs 
FROM 
BUG b 
JOIN LINK l ON b.BG_BUG_ID = l.LN_BUG_ID 
JOIN TEST t ON l.LN_ENTITY_ID = t.TS_TEST_ID 
WHERE 
(b.BG_STATUS = 'Open') OR 
(b.BG_STATUS LIKE '%Re%') OR 
(b.BG_STATUS LIKE '%En%') OR 
(b.BG_STATUS = 'Fixed') OR 
(b.BG_STATUS = 'New') AND 
(l.LN_ENTITY_TYPE = 'TEST') 
GROUP BY B.BG_BUG_ID 
ORDER BY b.BG_BUG_ID ASC 

您正在使用需要group by子句的聚合函数。

如果你想计数重复的t.ts_test_Ids,你可能需要删除distinct;或者如果你知道重复将不存在,或者如果你真的想要两次统计同一个id。

+0

在这种情况下,重复项不存在。我错过了集团!感谢你我的头痛会更好:) – Ajin