SQL Server 按照条件统计雨量数据-阿里云开发者社区

开发者社区> 暖枫无敌> 正文

SQL Server 按照条件统计雨量数据

简介: SQL中获取当前时间的小时数: select ltrim(datepart(hh,getdate()));   问题条件: 如果当前时间在8时之前,则取昨日8时后的累积雨量,如果在8日之后,则从今日8时之后取数据,SQL语句如下:   select t.
+关注继续查看

SQL中获取当前时间的小时数:

select ltrim(datepart(hh,getdate()));


 

问题条件:

如果当前时间在8时之前,则取昨日8时后的累积雨量,如果在8日之后,则从今日8时之后取数据,SQL语句如下:

 

select t.STNM,t1.DRP,t.LTTD,t.LGTD,t1.STCD from
(
    select STNM,LTTD,LGTD,STCD from ST_STBPRP_B
) t
,
(
      select distinct(STCD) as STCD,ttt.DRP as DRP from ST_PPTN_R tt
      left join 
      (
           select STCD as STCD2,sum(DRP) as DRP from ST_PPTN_R where
           TM>=
            (
                case when ltrim(datepart(hh,getdate()))>=8 then convert(varchar(10),getdate(),120)+' 08:00' else convert(varchar(10),getdate()-1,120)+' 08:00' end
            ) 
            group by STCD
      ) ttt 
      on tt.STCD=ttt.STCD2 
) t1 
where t.STCD=t1.STCD;

 

select t.STNM,t1.Z,t.LTTD,t.LGTD,t1.STCD from
				(
    					select STNM,LTTD,LGTD,STCD,ADDVCD,STTP from ST_STBPRP_B 
				)t
				,
				(
     					select distinct(STCD) as STCD,t3.Z from 
     					(
         					select STCD,TM,Z from ST_RIVER_R
         					union 
         					select STCD,TM,RZ as Z from ST_RSVR_R
     					) t2 
     					left join
     					(
       						  select tt.STCD as STCD2, avg(Z) as Z from 
         					 (
            						 select STCD,TM,Z from ST_RIVER_R
             						 union 
             						 select STCD,TM,RZ as Z from ST_RSVR_R
         					) tt
         					where  tt.TM>=
                                                (
                        				case when ltrim(datepart(hh,getdate()))>=8 then convert(varchar(10),getdate(),120)+' 08:00' else convert(varchar(10),getdate()-1,120)+' 08:00' end  
                                                )
                                                group by tt.STCD
      					) t3
      					on t2.STCD = t3.STCD2
				) t1
				where  t.STCD = t1.STCD and t.STTP not in ('pp') and t.ADDVCD like '3410%'



--所有雨量站点
select d.STNM,
(
 	case when d.STCD=e.STCD then e.DRP else 0 end
) as DRP,
d.LTTD,d.LGTD,d.STCD
from
(
	select t.STNM,t.LTTD,t.LGTD,t.STCD from ST_STBPRP_B t where STTP='PP' or STCD like '_______4'
) d
left join
(
	select t.STNM,ISNULL(t1.DRP,0) DRP,t.LTTD,t.LGTD,t1.STCD from
	(
   		 select STNM,LTTD,LGTD,STCD from ST_STBPRP_B where STTP='PP' or STCD like '_______4'
	) t
	,
	(
      		select distinct(STCD) as STCD,ttt.DRP as DRP from ST_PPTN_R tt
      		left join 
      		(
			select STCD as STCD2,sum(DRP) as DRP from ST_PPTN_R where
			TM>=
			(
   				case when ltrim(datepart(hh,getdate()))>=8 then convert(varchar(10),getdate(),120)+' 08:00' else convert(varchar(10),getdate()-1,120)+' 08:00' end
			) 
			group by STCD
      		) ttt 
      		on tt.STCD=ttt.STCD2 
	) t1 
	where t.STCD=t1.STCD
) e
on d.STCD=e.STCD;

--所有水位站


select d.STNM,
(
  	case when d.STCD=e.STCD then e.Z else 0 end
) as Z,
d.LTTD,d.LGTD,d.STCD
from
(
 	select t.STNM,t.LTTD,t.LGTD,t.STCD from ST_STBPRP_B t where STTP<>'PP'
) d
left join
(
 	select t.STNM,t1.Z,t.LTTD,t.LGTD,t1.STCD from
 	(
      		select STNM,LTTD,LGTD,STCD from ST_STBPRP_B 
 	)t
 	,
 	(
    	   	select * from 
  	(  
   		select STCD,TM,Z from ST_RIVER_R
    		union 
      	         select STCD,TM,RZ as Z from ST_RSVR_R  
  	) t
  	where t.TM in   
 	(  
     	 	select MAX(TM) from 
      		(
            		select STCD,TM,Z from ST_RIVER_R
       			union 
       			select STCD,TM,RZ as Z from ST_RSVR_R  
      		) t1
     		where t.STCD=t1.STCD  
 	 )  
 ) t1
 where  t.STCD = t1.STCD
) e
on d.STCD=e.STCD;


---------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

--报警水库数据
create view v_SK_WarningInfo
as
select zdt8 as s,tmnow as slasttime,t.STCD as 水位站编码,STNM as 水位站名称,STLC as 所属县,LGTD,LTTD,ShowLevel,WRZ,GRZ,tt.STTP,tt.RVNM,t.Msg
from
(
     select STCD,STNM,LGTD,LTTD,STLC,zdt8,tmnow,ShowLevel,IsNull(WRZ,0) as WRZ,IsNull(GRZ,0) as GRZ,case when WRZ-zdt8=0 then '达警戒' when zdt8 between WRZ and GRZ then '超警戒:'+cast((zdt8-WRZ) as varchar(10))  when zdt8>GRZ then '超保证:'+cast((zdt8-GRZ) as varchar(10)) else '正常' end as Msg from ST_RIVER_D
     union
    select STCD,STNM,LGTD,LTTD,STLC,zdt8,tmnow,ShowLevel,IsNull(FSLTDZ,0) as WRZ,0 as GRZ,case when FSLTDZ-zdt8=0 then '达汛限'  when zdt8>FSLTDZ then '超汛限:'+cast((zdt8-FSLTDZ) as varchar(10)) else '正常' end as Msg from ST_RSVR_D
) t,
(
    select STCD,STTP,RVNM from ST_STBPRP_B where STTP='RR'
) tt
where t.STCD=tt.STCD and Msg<>'正常';


--报警河道数据
create view v_HD_WarningInfo
as
select zdt8 as s,tmnow as slasttime,t.STCD as 水位站编码,STNM as 水位站名称,STLC as 所属县,LGTD,LTTD,ShowLevel,WRZ,GRZ,tt.STTP,tt.RVNM,t.Msg
from
(
     select STCD,STNM,LGTD,LTTD,STLC,zdt8,tmnow,ShowLevel,IsNull(WRZ,0) as WRZ,IsNull(GRZ,0) as GRZ,case when WRZ-zdt8=0 then '达警戒' when zdt8 between WRZ and GRZ then '超警戒:'+cast((zdt8-WRZ) as varchar(10))  when zdt8>GRZ then '超保证:'+cast((zdt8-GRZ) as varchar(10)) else '正常' end as Msg from ST_RIVER_D
     union
    select STCD,STNM,LGTD,LTTD,STLC,zdt8,tmnow,ShowLevel,IsNull(FSLTDZ,0) as WRZ,0 as GRZ,case when FSLTDZ-zdt8=0 then '达汛限'  when zdt8>FSLTDZ then '超汛限:'+cast((zdt8-FSLTDZ) as varchar(10)) else '正常' end as Msg from ST_RSVR_D
) t,
(
    select STCD,STTP,RVNM from ST_STBPRP_B where STTP='ZZ'
) tt
where t.STCD=tt.STCD and Msg<>'正常';



 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
大数据量查询容易OOM?试试MySQL流式查询
本文主要介绍如何使用流式查询并对比普通查询进行性能测试。
239 0
手把手教你-----巧用Excel批量生成SQL语句,处理大量数据
<p><span style="font-size:18px">     <span style="font-family:KaiTi_GB2312">在做系统或者做项目的时候,经常会遇到这样的要求:用户给我们发过来一些数据,要求我们把这些数据导入到数</span></span></p> <p><span style="font-size:18px"><span style="font-
2575 0
PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SER
1,$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 2,$_SERVER["REQUEST_URI"] 说明:访问此页面所需的URI 3,$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 4,$_SERV...
819 0
SQL Server 多表数据增量获取和发布 2.1
CDC介绍 cdc.png 为了满足数据迁移和数据抽取的业务需要,使得有机会在数据库层面上直接实现增量抽取功能,ORACLE综合性能和场景需要,在数据库引擎层面直接集成了CDC功能,由于提供了类似API的功能接口,变更数据捕获和更改跟踪均不要求在源中进行任何架构更改或使用触发器,所以比第三方工具具有一定的优势。
765 0
SQL Server 多表数据增量获取和发布 3
程序结构 新建一个窗体应用程序,新增三个类库,实现各个层次责任分离 BLL 业务逻辑层 Common 公共帮助类层 Models 模型层 SqlMonitoring SQL监视器程序 image.png 程序设计思路 大概的设计思路是这样的: 1、因为是多表数据增量获取,首先通过配置CDC已经完成多表的捕获配置。
775 0
+关注
625
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载