2014-01-15 2 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 

Теперь я хочу добавить отдельную строку с общим числом т. TS_TEST_ID для каждого b.BG_BUG_ID как Дефект Так оно и должно выглядеть следующим образом:

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

Не знаю, где добавить ВЫБЕРИТЕ ЦВЕТ (?), чтобы получить результат?

+0

'b.BG_BUG_ID as Defect, count (*) ...', а затем перед порядком: add '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; или если вы знаете, что дубликаты не будут существовать, или если вы действительно хотите считать один и тот же идентификатор дважды.

+0

В этом случае дубликатов не существует. Я пропустил группу! Благодаря тебе моя головная боль будет лучше :) – Ajin

Смежные вопросы