Я бы посоветовал переосмыслить ваш запрос, и как вы храните свои данные, это принципиально, поймите это неправильно, тогда запрос к базе данных станет кошмаром, и вы получите неожиданные результаты, например, должен ли Account.Closed быть нулевым? если бы это был я, я бы создал ограничение по умолчанию, которое установило бы новые учетные записи равными 0 (то есть открытые), затем написал бы запрос для обновления учетных записей, которые должны были быть закрыты, и снова установил бы его на 1.
, не зная по-настоящему Как выглядит ваша схема, предоставляя точный ответ, трудно.
Я бы тогда переписал запрос так:
SELECT Client.Client
FROM dbo.Client
LEFT JOIN dbo.ClientLink On Client.Client = ClientLink.Client
LEFT JOIN dbo.ClientLink.ExternalId = AccountLink.ExternalId
LEFT JOIN dbo.AccountLink.Account = Account.Account
WHERE Account.Closed = 0 --only return clients with opened accounts
, если это невозможно сделать, я бы переписал Ваш запрос выглядит следующим образом:
SELECT Client.Client, COUNT(Client.Client) AS NumberOfOpenAccounts
FROM dbo.Client
LEFT JOIN dbo.ClientLink On Client.Client = ClientLink.Client
LEFT JOIN dbo.ClientLink.ExternalId = AccountLink.ExternalId
LEFT JOIN dbo.AccountLink.Account = Account.Account
WHERE ISNULL(Account.Closed, 1) = 0 --only return clients with opened accounts
GROUP BY Client.Client