ms-sql 预警信息(欢迎加入)

net_xiaojian 2010-07-02 11:36:39
实时信息:
判断过程:查找各县中属于该县的水位站,水位数据距离现在时间在“预警时间周期”内满足条件的站点,取最严重的作为
该县的警戒级别,乡也一样。

乡一级:水位超过警戒水位0.5m
乡二级:水位接近警戒水位0.4m

县一级:水位超过警戒水位0.8m
县二级:水位达到警戒水位
县三级:水位接近警戒水位0.6m

预警时间周期:48小时

/* 参考信息:
w:当前水位,j:警戒水位
超过警戒水位0.5米,w > j + 0.5满足条件
到达警戒水位,则 w >= j满足条件
接近警戒水位0.5米,则 w >= j - 0.5则满足条件

此处的警戒水位0.5 是取上面的:0.5m,0.4m,0.8m,0.6m这些数值。
*/

相关表
监测站站点信息表:stcd_info
行政区划代码表:adcd_code
水位预警模型表:riverway_stcd_alarmnorm
预警参数表:earlyWarningPara
预警信息表(历史表):earlyWarningInfo
其他表:实时河道水情表:st_river_r
提示:st_river_r表每隔一段时间有一条新的数据插入,新数据去和riverway_stcd_alarmnorm、earlyWarningPara比较
为了方便我把这几个表数据提取出来:
riverway_stcd_alarmnorm:
-------90800001(站点代码),1.5(警戒水位),3(危险水位)
earlyWarningPara:预警等级,超过水位多少,预警周期(当前时间减去st_river_r数据时间≤预警周期)
------- '乡一级',0.5,48
------- '乡二级',0.4,48
------- '县一级',0, 48
------- '县二级',0.8,48
------- '县三级',0.6,48

例如:st_river_r表来了一条新数据数据为:90800001,2010-7-2 11:17:35,3.1,这条时间在预警周期内,水位是3.1m
水位去匹配riverway_stcd_alarmnorm表,属于危险水位,这里请看上面的注释参考信息,3.1-3=0.1,属于县一级。

--说明:
同一个监测站点stcd相同,预警周期内。
1.1、st_river_r表TM字段判断没有新的变化,数据不变。
1.2、有更高的预警出现,则往earlyWarningInfo新添加一天数据。
2.1、预警时间外,则往earlyWarningInfo新添加一天数据。

最终列表形式为表数据是earlyWarningInfo里的:
预警级别 预警区域 灾害情况 预警响应情况
县三级 **县 水位... 新预警
乡一级 **乡 水位 .... 响应启动


sql:
create table stcd_info
(
id int primary key
,stcd char(8) not null
,stName char(40)
,Adcd char(15)
,stType int
)

insert into stcd_info(id,stcd,stName,Adcd,stType)
select 101,'90800001','娘热村','5401021006',4
union all
select 102,'90800002',新仓沟','5401260102',4

create table adcd_code
(
Adcd char(15) primary key
,pAdcd char(15)
,[Name] varchar(60)
,adType tinyint
)

insert into adcd_code(Adcd,pAdcd,[Name],adType)
select '5401021006','5401021000','娘热',4
union all
select '5401021000','5401020000','娘热乡,3
union all
select '5401020000','5401000000','城关区',2
union all
select '5401260102','5401260100','新仓',4
union all
select '5401260100','5401260000','德庆镇',3
union all
select '5401260000','5401000000','达孜县',2
union all
select '5401000000','5401000000','拉萨市',1

create table riverway_stcd_alarmnorm
(
stcd char(8) not null
,wrz numeric(18,3) --警告水位
,dpz numeric(18,3) --危险水位
)

insert into riverway_stcd_alarmnorm(stcd,wrz,dpz)
select '90800001',1.5,3
union all
select '90800002',1.75,2.5

create table earlyWarningPara
(
eId int identity(1,1) primary key
,eRank nvarchar(20) --乡一级、乡二级、县一级、县二级、县三级
,eOverWWL decimal --超过警戒水位
,eCycle float --预警周期:小时
)

insert into earlyWarningPara(eRank,eOverWWL,eCycle)
select '乡一级',0.5,48
union all
select '乡二级',0.4,48
union all
select '县一级',0,48
union all
select '县二级',0.8,48
union all
select '县三级',0.6,48
union all

create table earlyWarningInfo
(
eAdcd char(15) --区划代码
,eRank nvarchar(20) --预警级别
,eInfo nvarchar(300) --灾害情况
,eStep int --新预警、内部预警、发布预警、响应启动、响应结束
,eOccureTime datetime --发生降雨或水位超标时间
,eIEWTime datetime --内部预警时间
,ePEWTime datetime --发布预警时间
,eResponseStartTime datetime --响应启动时间
,eResponseFinishTime datetime --响应结束时间
)

create table st_river_r
(
stcd char(8) not null
,TM datetime --数据时间
,Z numeric(18,3) --水位
)

insert into st_river_r(stcd,TM,Z)
select '90800001','2010-7-2 11:11:47',1
union all
select '90800001','2010-7-1 11:11:47',1
union all
select '90800001','2010-7-2 11:11:47',1
union all
select '90800001','2010-6-29 11:11:47',1
union all
select '90800001','2010-6-30 11:11:47',1
union all
select '90800002','2010-7-2 11:11:47',1
union all
select '90800002','2010-7-2 11:11:47',1
union all
select '90800002','2010-7-1 11:11:47',1
union all
select '90800002','2010-6-29 11:11:47',1
union all
select '90800002','2010-6-30 18:11:47',1
union all
...全文
96 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄_瓜 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wufeng4552 的回复:]
强烈要求把一楼关xhw
太水了
[/Quote]
不好意思,我以为是。。。。
水族杰纶 2010-07-02
  • 打赏
  • 举报
回复
强烈要求把一楼关xhw
太水了
nightmaple 2010-07-02
  • 打赏
  • 举报
回复
人家这是技术帖~
nightmaple 2010-07-02
  • 打赏
  • 举报
回复
DBB
黄_瓜 2010-07-02
  • 打赏
  • 举报
回复
dbb
黄_瓜 2010-07-02
  • 打赏
  • 举报
回复
bdd
黄_瓜 2010-07-02
  • 打赏
  • 举报
回复
sff
claro 2010-07-02
  • 打赏
  • 举报
回复
纯帮顶
bancxc 2010-07-02
  • 打赏
  • 举报
回复
强烈要求把一楼关xhw
net_xiaojian 2010-07-02
  • 打赏
  • 举报
回复
8楼 此数据是earlyWarningPara表里面的,可以编辑的值。
永生天地 2010-07-02
  • 打赏
  • 举报
回复
看了半天,实在搞不懂
'乡一级','乡二级',
'县一级', '县二级', '县三级'

这些是确定的吗

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧