Hi, my query takes 1m 4sec to complete. I am going to put a frontend on this, so 1m 4sec is way too long. Is there a better way to write this query? I wrote this yesterday.SELECT dt.pCBUDescription, [Monthly Comp]=sum(dt.[Month Comp]), [Month Quality Comp] = sum(dt.[Month Quality Comp]), [Cumulative Comp] = sum(dt.[Cumulative Comp]), [Cumulative Quality Comp] = sum(dt.[Cumulative Quality Comp]), [PY Comp] = sum(dt.[PY Comp]), [PY Cumulative Comp] = SUM(dt.[PY Cumulative Comp]), [YTD Variance] = round((SUM(dt.[Cumulative Comp]) * 100) / (SUM(dt.[PY Cumulative Comp]) - 100), 0), [CPM Month Comp] = SUM(dt.[CPM Month Comp]), [CPM Quality Comp] = SUM(dt.[CPM Quality Comp]), [CPM Cumulative Comp] = SUM(dt.[CPM Cumulative Comp]), [CPM Cumulative Quality] = SUM(dt.[CPM Cumulative Quality]), [CPM PY Comp] = SUM(dt.[PY Comp])FROM(SELECT C.pCBUDescription, A.CSNCode, [Month Comp] = dbo.ufn_fcKF1(A.CSNCode, 12,2011), [Month Quality Comp] = dbo.ufn_fcKF2(A.CSNCode, 12, 2011), [Cumulative Comp] = dbo.ufn_fcKF3(A.CSNCode, 12, 2011), [Cumulative Quality Comp] = dbo.ufn_fcKF4(A.CSNCode, 12, 2011), [PY Comp] = dbo.ufn_fcKF5(A.CSNCode, 12, 2011), [PY Cumulative Comp] = dbo.ufn_fcKF6(A.CSNCode, 12, 2011), [CPM Month Comp] = (dbo.ufn_fcKF1(A.CSNCode, 12, 2011)) / (dbo.ufn_fcKF8(A.CSNCode, 12, 2011)) * 1000000, [CPM Quality Comp] = (dbo.ufn_fcKF2(A.CSNCode, 12, 2011)/ NullIf(dbo.ufn_fcKF8(A.CSNCode, 12,2011), 0)) * 1000000, [CPM Cumulative Comp] = (dbo.ufn_fcKF3(A.CSNCode, 12, 2011) / Nullif(dbo.ufn_fcKF9(A.CSNCode, 12, 2011),0)) * 1000000, [CPM Cumulative Quality] = (dbo.ufn_fcKF4(A.CSNCode, 12, 2011) / Nullif(dbo.ufn_fcKF9(A.CSNCode, 12, 2011), 0)) * 1000000, [CPM PY Comp] = (dbo.ufn_fcKF5(A.CSNCode, 12, 2011) / NullIf(dbo.ufn_fcKF5(A.CSNCode, 12, 2011),0)) * 1000000 --,FROM dbo.t_Prm_Fct_Comp AINNER JOIN dbo.t_Prm_Dim_Product C ON C.pProductCode = A.CSNCode) dtGROUP BY dt.pCBUDescription