You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HT.Back/选择的那个sql.sql

40 lines
1.7 KiB
MySQL

CREATE PROCEDURE [dbo].[Record_SteamPointData]
AS
BEGIN
declare @begin_time datetime
declare @end_time datetime
declare @dateinfo datetime;
set @begin_time = DATEADD(hh, -1, GETDATE());
set @end_time = DATEADD(hh, -0, GETDATE());
set @dateinfo = GETDATE();
WITH LatestSteam AS (
SELECT
T1.monitor_code,
T1.steam_flow,
ROW_NUMBER() OVER (PARTITION BY T1.monitor_code ORDER BY T1.collect_time DESC) AS rn
FROM ems_record_steam_instant T1
WHERE T1.collect_time BETWEEN DATEADD(HH, -1, @dateinfo) AND DATEADD(HH, 0, @dateinfo)
),
LatestReport AS (
SELECT
E1.monitor_code,
E1.begin_time,
E1.instrument_value,
ROW_NUMBER() OVER (PARTITION BY E1.monitor_code ORDER BY E1.begin_time DESC) AS rn
FROM ems_report_point_steam E1
)
INSERT INTO ems_report_point_steam (monitor_code, expend, instrument_value, begin_time, end_time, record_time)
SELECT
t1.monitor_code AS monitor_code,
CONVERT(DECIMAL(18, 2), ISNULL((t3.steam_flow - t4.instrument_value), 0)) AS expend,
ISNULL(t3.steam_flow, 0) AS instrument_value,
DATEADD(HH, -1, @dateinfo) AS begin_time,
DATEADD(HH, 0, @dateinfo) AS end_time,
CONVERT(VARCHAR(30), DATEADD(HH, -1, @dateinfo), 120) AS record_time
FROM ems_base_monitor_info t1
LEFT JOIN LatestSteam t3 ON t1.monitor_code = t3.monitor_code AND t3.rn = 1
LEFT JOIN LatestReport t4 ON t1.monitor_code = t4.monitor_code AND t4.rn = 1;
END;
GO