Query looks something like this:
SELECT
A.Id,
COUNT(DISTINCT (CASE WHEN (C.TypeId in (54, 57, 58, 59) OR (ISNULL(B.count1, 0) + ISNULL(B.count3, 0) + ISNULL(B.count2, 0) > 0))
THEN D.AdrsId
ELSE NULL
END)) AS C1),
C2, C3.................................................C42
FROM
A123 A
INNER JOIN
E123 E on A.Id = A.ID
INNER JOIN
B123 B on B.Id = A.Id AND B.IsDeleted = 0
INNER JOIN
C123 C on C.Id = B.Id AND C.Isdeleted = 0
LEFT OUTER JOIN
D123 D ON B.someId = D.someId AND D.IsDeleted = 0 AND D.xId > 0
GROUP BY
A.Id
C2, C3, ..., C42
are columns with COUNT(DISTINCT)
operation like C1
.
Compared query execution plans in 2012 and 2014, the difference is in distinct sort cost.