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 AON S.PRODUCT_ID = A.PRODUCT_ID AND RowNum = 1