Как отфильтровать промежуточные итоги отчета о доступе

Имейте отчет о доступе, который показывает программы обучения и сотрудников, которые должны быть обучены, но не обучены этой программе. Этот запрос в порядке. Проблема в том, что мы хотим отображать в отчете только программы обучения, в которых более 10 сотрудников не обучены. Таким образом, у нас есть общее количество необученных для каждой программы в промежуточном итоге, но мы хотим отфильтровать это значение.

Как это может быть сделано?

РЕДАКТИРОВАТЬ:

Вот сквозной запрос к SQL Server

SELECT T.ProgramTitle
       ,T.ProgramCode
       ,AE.Code AS 'AvantiCode'
       ,AE.FullName
       ,AE.FirstName
       ,AE.LastName
       ,AE.Department
       ,C.Position
       ,AE.Shift
FROM HR_Curriculum C
INNER JOIN HR_Trainings T ON C.TrainingID = T.TrainingID
INNER JOIN HR_EmployeeDetails ED ON C.Position = ED.Postion
INNER JOIN Avanti_Employees AE ON ED.AvantiRecID = AE.RecID
LEFT JOIN HR_Employeetrainings ET ON C.TrainingID = ET.TrainingID
                                 AND ED.AvantiRecID = ET.AvantiRecID
LEFT JOIN HR_TrainingVersion V ON V.VersionID = ET.VersionID
WHERE terminated = 0
       AND T.Active = - 1
       AND CompletedDate IS NULL

GROUP BY T.ProgramTitle
       ,T.ProgramCode
       ,AE.Code
       ,AE.FullName
       ,AE.FirstName
       ,AE.LastName
       ,AE.Department
       ,C.Position
       ,AE.Shift
Order by programtitle

person MAW74656    schedule 18.03.2015    source источник
comment
Покажите нам свой запрос и, если можно, скриншот отчета. Я думаю, что ваш вопрос не совсем заполняет все пробелы, которые нам нужны, чтобы адекватно ответить на ваш вопрос. И вы говорите, что запрос в порядке, но я думаю, что это будет сделано в запросе, и отчет будет использоваться для упорядочения/группировки по вашему усмотрению.   -  person Mark C.    schedule 18.03.2015
comment
Я вижу, что это сквозной запрос к SQL Server. Я думаю, вы можете использовать этот запрос в качестве подзапроса и использовать Count(), чтобы определить, в каких программах есть › 10 необученных сотрудников, или вы можете использовать Common Table Expression для возврата результатов из вашего запрос, а потом только Выбрать записи оттуда HAVING SomeCount > 10   -  person Mark C.    schedule 18.03.2015
comment
Не рекомендуется фильтровать записи на уровне отчета. Вы хотите, чтобы возвращалось в точности то, что вы ожидаете увидеть в своем отчете, чтобы, если что-то пойдет не так или вам нужно что-то исправить, вы работаете с набором записей, а не играете с функциями отчетности ( что может быть сложно)   -  person Mark C.    schedule 18.03.2015
comment
Так что переделайте запрос, чтобы фильтровать там?   -  person MAW74656    schedule 18.03.2015
comment
Я буду. Я бы увидел, что у вас есть два варианта. Сохраните свой отчет и запрос и создайте другой отчет с этой желаемой функциональностью и фильтрацией нового запроса по количеству необученных сотрудников по программам на случай, если вам когда-нибудь понадобится исходный отчет/запрос. Или просто внесите изменения в этот запрос.   -  person Mark C.    schedule 18.03.2015


Ответы (1)


Рассмотрим встроенное представление, используя сгруппированный по псевдониму таблицы с предложением HAVING.

Попробуйте добавить еще одно внутреннее соединение:

INNER JOIN 
(SELECT TrainingID, ProgramTitle, ProgramCode
FROM HR_Trainings
GROUP BY TrainingID, ProgramTitle, ProgramCode
HAVING Count(TrainingID) > 10) AS Trainings10More
ON Trainings10More.TrainingID = T.TrainingID
person Parfait    schedule 19.03.2015
comment
Хотя я уверен, что это сработает, я считаю использование CTE (или производного запроса) гораздо более читабельным подходом. - person MAW74656; 20.03.2015