create table #DCsystem --直流系统
(
ID int identity(1,1),
Name varchar(50) --直流系统名
)insert into #DCstation values('直流系统1');
insert into #DCstation values('直流系统2');create table #alarm --告警
(
AlarmType varchar(50),--告警类型
DCsystemID int,--直流系统外键
DeviceType varchar(50),--设备类型
Handling decimal(1, 0) --是否处理告警
)insert into #alarm values('高越限告警',1,'直流系统',0);
insert into #alarm values('低越限预警',1,'直流系统',1);
insert into #alarm values('低越限告警',1,'直流系统',1);
insert into #alarm values('通讯中断告警',1,'直流系统',0);
insert into #alarm values('低越限告警',2,'直流系统',1);
insert into #alarm values('通讯中断告警',2,'直流系统',0);
insert into #alarm values('低越限告警',1,'蓄电池组',0);
insert into #alarm values('高越限预警',1,'蓄电池组',1);
insert into #alarm values('高越限预警',1,'蓄电池组',1);先解释下
直流系统里面有多个蓄电池组(蓄电池组也有一个表,暂时没有用到,先忽略),每个直流系统和电池组都有告警及预警,现在我想查“直流系统的告警和预警信息”,求mssql查询结果如下:设备名称 预警 告警 已处理
直流系统1 3 4 2
直流系统2 0 2 1再解释下
预警就是“低越限预警” “高越限预警”的出现次数
告警就是“高越限告警”“低越限告警” “通讯中断告警”的出现次数
已处理就是已处理次数,数据表里的1为已处理,0为未处理注意:因为蓄电池组是在直流系统里的一部分,所以也算在“直流系统1”的统计里
(
ID int identity(1,1),
Name varchar(50) --直流系统名
)insert into #DCstation values('直流系统1');
insert into #DCstation values('直流系统2');create table #alarm --告警
(
AlarmType varchar(50),--告警类型
DCsystemID int,--直流系统外键
DeviceType varchar(50),--设备类型
Handling decimal(1, 0) --是否处理告警
)insert into #alarm values('高越限告警',1,'直流系统',0);
insert into #alarm values('低越限预警',1,'直流系统',1);
insert into #alarm values('低越限告警',1,'直流系统',1);
insert into #alarm values('通讯中断告警',1,'直流系统',0);
insert into #alarm values('低越限告警',2,'直流系统',1);
insert into #alarm values('通讯中断告警',2,'直流系统',0);
insert into #alarm values('低越限告警',1,'蓄电池组',0);
insert into #alarm values('高越限预警',1,'蓄电池组',1);
insert into #alarm values('高越限预警',1,'蓄电池组',1);先解释下
直流系统里面有多个蓄电池组(蓄电池组也有一个表,暂时没有用到,先忽略),每个直流系统和电池组都有告警及预警,现在我想查“直流系统的告警和预警信息”,求mssql查询结果如下:设备名称 预警 告警 已处理
直流系统1 3 4 2
直流系统2 0 2 1再解释下
预警就是“低越限预警” “高越限预警”的出现次数
告警就是“高越限告警”“低越限告警” “通讯中断告警”的出现次数
已处理就是已处理次数,数据表里的1为已处理,0为未处理注意:因为蓄电池组是在直流系统里的一部分,所以也算在“直流系统1”的统计里
解决方案 »
- 请问,为什么用xp_cmdshell 执行一个批处理不执行?
- 用DTS如何批量文件导入数据库,急!
- 事务提交
- 紧急在线等,2000下装sql server问题
- 探索中的问题数据库恢复问题
- 请问李斌老师: 在where后面能加 if 来控制后面的条件个数吗?
- 用SELECT datepart(dw,getdate())得到的星期天数总比中国的的差一?怎么解决?
- sp_executesql问题。SQL语句超过4000,多个@SQL不能用"+"连接怎么办?进来看看!非常感谢!
- SQL Server 2005包安装出现“客户端无法连接,不支持加密”。是怎么回事?
- 如何在程序中修复VFP6.0中因停电而造成的备注文件损坏?
- 求解一道综合SQL语句
- IIS7应用程序池自动停止
(
ID int identity(1,1),
Name varchar(50) --直流系统名
)insert into #DCsystem values('直流系统1');
insert into #DCsystem values('直流系统2');create table #alarm --告警
(
AlarmType varchar(50),--告警类型
DCsystemID int,--直流系统外键
DeviceType varchar(50),--设备类型
Handling decimal(1, 0) --是否处理告警
)insert into #alarm values('高越限告警',1,'直流系统',0);
insert into #alarm values('低越限预警',1,'直流系统',1);
insert into #alarm values('低越限告警',1,'直流系统',1);
insert into #alarm values('通讯中断告警',1,'直流系统',0);
insert into #alarm values('低越限告警',2,'直流系统',1);
insert into #alarm values('通讯中断告警',2,'直流系统',0);
insert into #alarm values('低越限告警',1,'蓄电池组',0);
insert into #alarm values('高越限预警',1,'蓄电池组',1);
insert into #alarm values('高越限预警',1,'蓄电池组',1);
goselect m.name 设备名称,
sum(case right(n.alarmtype,2) when '预警' then 1 else 0 end) [预警],
sum(case right(n.alarmtype,2) when '告警' then 1 else 0 end) [告警],
sum(case when n.Handling = 1 and n.DeviceType <> '蓄电池组' then 1 else 0 end) [已处理]
from #DCsystem m , #alarm n
where m.id = n.DCsystemID
group by m.namedrop table #DCsystem , #alarm/*
设备名称 预警 告警 已处理
-------------------------------------------------- ----------- ----------- -----------
直流系统1 3 4 2
直流系统2 0 2 1(所影响的行数为 2 行)
*/