• here is one of procedure, which is slowlier thanks to function...

    in the attachment you have in word all ddl from this, and in excel files for all tables 1000rows.

    ALTER PROCEDURE [dbo].[UP_PDP_PRODUCTION]

    AS

    BEGIN

    DECLARE @LAST_ORDER AS VARCHAR(100)

    SELECT TOP 1 @LAST_ORDER = COMMIT_NO +''+''+''+''+''+BODY_NO FROM TB_RCV_ALCDATA (NOLOCK)WHERE DATA_TYPE = 'SN' ORDER BY TR_ID DESC

    SELECT DS.LINE_CODE

    --DS.ORDER_QTY //--2012-03-08

    , ( DS.OPERATION_SEC - DS.PLAN_STOP_SEC ) / 60 AS NEW_TARGET

    , DS.PROD_QTY

    --, STR( CASE WHEN DS.ORDER_QTY = 0 THEN 0 ELSE CONVERT(DECIMAL, DS.PROD_QTY) / DS.ORDER_QTY * 100 END, 5,1) "PROD_RATE"

    , STR( ISNULL((CONVERT(DECIMAL, DS.PROD_QTY) / (NULLIF((DS.OPERATION_SEC - DS.PLAN_STOP_SEC), 0) / 60) * 100), 0), 5, 1) "PROD_RATE"

    , @LAST_ORDER "LAST_ORDER"

    , ISNULL(LT.LINE_ALARM,'F') "LINE_ALARM"

    ,GETDATE() "GETDATE"

    FROM TB_DAILY_SUMMARY DS (NOLOCK)

    JOIN FN_TABLE_GET_WORK_DATE() FW

    ON DS.WORK_DATE = FW.WORK_DATE AND DS.SHIFT_ID = FW.SHIFT_ID

    LEFT JOIN TB_LINE_TRACKING LT (NOLOCK)

    ON DS.LINE_CODE = LT.LINE_CODE

    ORDER BY LINE_CODE

    SET NOCOUNT OFF

    END

    HERE IS RESULT OF select * from FN_TABLE_GET_WORK_DATE() for today

    20131017WT_W003A60020131016WT_W003C2700

    HERE IS RESULT exec UP_PDP_PRODUCTION for this time, it is still changed according to data..

    CPF012160 0.00220A6W 052123 F2013-10-17 09:46:34.663

    CPM01216213 98.60220A6W 052123 F2013-10-17 09:46:34.663

    ENG01216200 92.60220A6W 052123 F2013-10-17 09:46:34.663

    FAX01216199 92.10220A6W 052123 F2013-10-17 09:46:34.663

    FAX02216200 92.60220A6W 052123 F2013-10-17 09:46:34.663

    FCM01216196 90.70220A6W 052123 T2013-10-17 09:46:34.663

    FEF012160 0.00220A6W 052123 F2013-10-17 09:46:34.663

    FEM01216207 95.80220A6W 052123 F2013-10-17 09:46:34.663

    RCM01216207 95.80220A6W 052123 F2013-10-17 09:46:34.663

    SUS012160 0.00220A6W 052123 F2013-10-17 09:46:34.663