diff --git a/新选择2,11.26.sql b/新选择2,11.26.sql new file mode 100644 index 0000000..7cdba57 --- /dev/null +++ b/新选择2,11.26.sql @@ -0,0 +1,51 @@ +CREATE PROCEDURE [dbo].[Record_SteamPointData] +AS +declare @begin_time datetime +declare @end_time datetime +BEGIN + set @begin_time = DATEADD(hh, -1, GETDATE()); + set @end_time = DATEADD(hh, -0, GETDATE()); + declare @dateinfo datetime; + set @dateinfo = GETDATE(); +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 ( + SELECT T1.monitor_code, T1.steam_flow, T1.collect_time + FROM ems_record_steam_instant T1 + INNER JOIN ( + SELECT monitor_code, MAX(collect_time) AS latest_collect_time + FROM ems_record_steam_instant + WHERE collect_time BETWEEN @begin_time AND @end_time + GROUP BY monitor_code + ) T2 + ON T1.monitor_code = T2.monitor_code AND T1.collect_time = T2.latest_collect_time + WHERE T1.collect_time BETWEEN @begin_time AND @end_time +) t3 ON t1.monitor_code = t3.monitor_code + + + + LEFT JOIN ( + SELECT E1.monitor_code,E1.begin_time,E1.instrument_value + FROM ems_report_point_steam E1 + JOIN ( + SELECT monitor_code, MAX(begin_time) AS begin_time + FROM ems_report_point_steam + GROUP BY monitor_code) E2 + on E1.begin_time = E2.begin_time AND E1.monitor_code = E2.monitor_code +) t4 ON t1.monitor_code = t4.monitor_code; + + + + + + +END; +go +