Используя COUNT(DISTINCT B.FkId)
результат может быть достигнут. COUNT не учитывает значения NULL
, поэтому следующий запрос будет работать.
SELECT COUNT(DISTINCT B.FkId) AS Occurence
FROM TableA A
LEFT JOIN TableB B ON B.FkId = A.Id;
или это может быть достигнуто с INNER JOIN
тоже
SELECT COUNT(DISTINCT B.FkId) AS Occurence
FROM TableA A
INNER JOIN TableB B ON B.FkId = A.Id;
Демо с примерами данных:
DECLARE @TableA TABLE (Id INT, [Name] VARCHAR (2));
INSERT INTO @TableA (Id, [Name]) VALUES
(1, 'ab'),
(2, 'cd'),
(3, 'eg'),
(4, 'fg');
DECLARE @TableB TABLE (FkId INT);
INSERT INTO @TableB (FkId) VALUES
(1),
(2),
(2),
(1),
(1),
(2),
(4);
SELECT COUNT(DISTINCT B.FkId) AS Occurence
FROM @TableA A
LEFT JOIN @TableB B ON B.FkId = A.Id