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