SQL统计汇总的问题,请高手指教
数据库表结构如下:
煤矿名称(varchar(50)),传感器编号(varchar(10)),传感器名称(varchar(50)),传感器类型(varchar(10)),状态(int),当前值(float),当前时间(datetime)
模拟数据为:
A矿 c001 一层传感器 风门 0 0.0 2007-1-31 00:00:00
A矿 c001 一层传感器 风门 1 0.0 2007-1-31 00:00:20
A矿 c001 一层传感器 风门 0 0.0 2007-1-31 18:40:15
A矿 c001 一层传感器 风门 1 0.0 2007-1-31 18:45:20
A矿 c001 一层传感器 风门 128 0.0 2007-1-31 20:30:13
A矿 c001 一层传感器 风门 1 0.0 2007-1-31 21:30:25
A矿 c001 一层传感器 风门 128 0.0 2007-1-31 22:20:10
A矿 c001 一层传感器 风门 0 0.0 2007-1-31 22:50:44
A矿 c001 一层传感器 风门 1 0.0 2007-1-31 23:00:44
A矿 c001 一层传感器 风门 0 0.0 2007-1-31 23:50:44
A矿 c002 二层传感器 风机 0 0.0 2007-1-31 00:00:00
A矿 c002 二层传感器 风机 1 0.0 2007-1-31 00:10:10
B矿 d001 总回风 风门 0 0.0 2007-1-31 00:00:00
B矿 d001 总回风 风门 1 0.0 2007-1-31 00:20:10
B矿 d001 总回风 风门 0 0.0 2007-1-31 23:20:44
B矿 d001 总回风 风门 1 0.0 2007-1-31 23:40:44
状态有0,1,128等 0表示打开,1表示关闭,128表示故障
希望分组统计得到信息如下:
矿名 编号 名称 类型 累计开次数 累计开时间 累计关次数 累计关时间
A矿 c001 一层传感器 风门 4 00:19:51 6 23:40:09
A矿 c002 二层传感器 风机 1 00:10:10 1 23:49:50
B矿 d001 总回风 风门 2 00:40:10 2 23:19:50
有一次0记一次开次数,不为0时都记为关次数
累计时间为状态从0到1改变为开时间,遇128默认为关状态,遇到128时数据显示不规则,是否能在SQL统计中实现希望得到的分组统计效果,如果不行,是否可以放到程序中对符合条件的记录集合再次拆分统计,得到欲实现效果,有好的实现的意见或办法也欢迎大家指教,谢谢了
------解决方案--------------------declare @t1 table (Mname varchar(10),SCode varchar(10),SName varchar(20),SType varchar(10),Status int,Value float,Dates datetime)
insert into @t1 select 'A矿 ', 'c001 ', '一层传感器 ', '风门 ', 0 ,0.0, '2007-1-31 00:00:00 '
insert into @t1 select 'A矿 ', 'c001 ', '一层传感器 ', '风门 ', 1 ,0.0, '2007-1-31 00:00:20 '
insert into @t1 select 'A矿 ', 'c001 ', '一层传感器 ', '风门 ', 0 ,0.0, '2007-1-31 18:40:15 '
insert into @t1 select 'A矿 ', 'c001 ', '一层传