Мне кажется, что вы хотите узнать, существуют ли данные, я полагаю, что ваш AgentID является внешним ключом для таблицы агентства, DataSourceID также для DataSource, и что у вас есть таблица AccountingMonth, в которой есть все учетные периоды:
SELECT ds.ID as DataSourceID , ag.ID as AgencyID , am.ID as AccountingMonth ,
ISNULL(COUNT(a.*),0) as Count
FROM [Table1] a
RIGHT JOIN [Datasource] ds ON ds.ID = a.DataSourceID
RIGHT JOIN [Agency] ag ON ag.ID = a.AgencyID
RIGHT JOIN [AccountingMonth] am on am.ID = a.AccountingMonth
GROUP BY ds.ID, ag.ID, am.ID
Таким образом, вы можете увидеть количество записей на группу по критериям. Обратите внимание, что RIGHT join, вы должны использовать RIGHT JOIN, если вы хотите включить все записи из таблицы "Right".
В вашем запросе у вас есть DISTINCT a.DatasourceID и WHERE a.DatasourceID = 5, и он возвращает 5, если вТаблица существует строк, которые соответствуют вашим критериям WHERE, и возвращает ноль, если нет данных. Если вы удалите WHERE a.DatasourceID = 5, ваш запрос будет прерван с ошибкой: подзапрос вернул несколько строк.