without knowing you data, table structure or indexing, it's hard to say. Here is a guess that may or may not be faster:SELECT
COALESCE(A.A + A.B, 0) AS EX_1,
COALESCE(A.C + A.D, 0) AS EX2,
...
FROM
STOCKS S WITH (NOLOCK)
LEFT OUTER JOIN
(
SELECT
A,
B,
C,
D,
E,
PRODUCT_ID,
ROW_NUMBER() OVER
(
PARTITION BY
PRODUCT_ID
ORDER BY
START_DATE DESC,
RECORD_DATE DESC,
PRODUCT_COST_ID DESC
) AS RowNum
FROM
PRODUCT_COST WITH (NOLOCK)
WHERE
START_DATE <= CAST('2012-06-11T00:00:00' AS DATETIME)
) AS A
ON
S.PRODUCT_ID = A.PRODUCT_ID
AND RowNum = 1