IF OBJECT_ID('dbo.asr_wrk_cube_day_stat', 'U') IS NULL
|
BEGIN
|
CREATE TABLE dbo.asr_wrk_cube_day_stat (
|
stat_date date NOT NULL,
|
wrk_sts_5_cube_sum decimal(18,4) NOT NULL CONSTRAINT DF_asr_wrk_cube_day_stat_sts5 DEFAULT (0),
|
wrk_sts_15_cube_sum decimal(18,4) NOT NULL CONSTRAINT DF_asr_wrk_cube_day_stat_sts15 DEFAULT (0),
|
refresh_time datetime NOT NULL CONSTRAINT DF_asr_wrk_cube_day_stat_refresh DEFAULT (GETDATE()),
|
CONSTRAINT PK_asr_wrk_cube_day_stat PRIMARY KEY CLUSTERED (stat_date)
|
);
|
END
|
GO
|
|
IF OBJECT_ID('dbo.usp_refresh_wrk_cube_day_stat', 'P') IS NOT NULL
|
DROP PROCEDURE dbo.usp_refresh_wrk_cube_day_stat;
|
GO
|
|
CREATE PROCEDURE dbo.usp_refresh_wrk_cube_day_stat
|
AS
|
BEGIN
|
SET NOCOUNT ON;
|
|
DECLARE @start_dt date = DATEADD(DAY, -11, CONVERT(date, GETDATE()));
|
DECLARE @end_dt date = DATEADD(DAY, 1, CONVERT(date, GETDATE()));
|
|
BEGIN TRY
|
BEGIN TRAN;
|
|
DELETE FROM dbo.asr_wrk_cube_day_stat;
|
|
;WITH n AS (
|
SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
|
UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
|
UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11
|
),
|
dates AS (
|
SELECT DATEADD(DAY, n.n, @start_dt) AS stat_date
|
FROM n
|
),
|
mast AS (
|
SELECT
|
m.wrk_no,
|
m.io_time,
|
m.wrk_sts
|
FROM dbo.asr_wrk_mast_log m
|
WHERE m.wrk_sts IN (5, 15)
|
AND m.io_time >= @start_dt
|
AND m.io_time < @end_dt
|
),
|
detl AS (
|
SELECT
|
d.wrk_no,
|
d.io_time,
|
SUM(ISNULL(d.cube_number, 0)) AS cube_sum
|
FROM dbo.asr_wrk_detl_log d
|
WHERE d.io_time >= @start_dt
|
AND d.io_time < @end_dt
|
GROUP BY d.wrk_no, d.io_time
|
),
|
agg AS (
|
SELECT
|
CONVERT(date, m.io_time) AS stat_date,
|
SUM(CASE WHEN m.wrk_sts = 5 THEN d.cube_sum ELSE 0 END) AS wrk_sts_5_cube_sum,
|
SUM(CASE WHEN m.wrk_sts = 15 THEN d.cube_sum ELSE 0 END) AS wrk_sts_15_cube_sum
|
FROM mast m
|
INNER JOIN detl d
|
ON d.wrk_no = m.wrk_no
|
AND d.io_time = m.io_time
|
GROUP BY CONVERT(date, m.io_time)
|
)
|
INSERT INTO dbo.asr_wrk_cube_day_stat (
|
stat_date,
|
wrk_sts_5_cube_sum,
|
wrk_sts_15_cube_sum,
|
refresh_time
|
)
|
SELECT
|
ds.stat_date,
|
CAST(ISNULL(a.wrk_sts_5_cube_sum, 0) AS decimal(18,4)),
|
CAST(ISNULL(a.wrk_sts_15_cube_sum, 0) AS decimal(18,4)),
|
GETDATE()
|
FROM dates ds
|
LEFT JOIN agg a
|
ON a.stat_date = ds.stat_date;
|
|
COMMIT TRAN;
|
END TRY
|
BEGIN CATCH
|
IF @@TRANCOUNT > 0
|
ROLLBACK TRAN;
|
THROW;
|
END CATCH
|
END
|
GO
|
|
EXEC dbo.usp_refresh_wrk_cube_day_stat;
|
GO
|