From 257dba0af32fd277002eaec98a1fe78d191b529d Mon Sep 17 00:00:00 2001 From: zch Date: Tue, 26 Nov 2024 12:24:49 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=88sql=EF=BC=89=EF=BC=9A=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AE=B0=E5=BD=95=E8=92=B8=E6=B1=BD=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B=EF=BC=8C2024/11/2?= =?UTF-8?q?6=E7=A1=AE=E5=AE=9A=E7=9A=84=E4=BD=9C=E4=B8=9A=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增名为 Record_SteamPointData 的存储过程 - 该过程用于记录蒸汽消耗数据 - 从 ems_record_steam_instant 表中获取最新数据 - 计算蒸汽消耗量并插入到 ems_report_point_steam 表中 --- 新选择2,11.26.sql | 51 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 新选择2,11.26.sql 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 +