仪表ID 故障类型ID 故障时间 仪表名称 故障名称 1 2 1278990839 101#采集器 短路故障
1 2 1279081263 101#采集器 短路故障
1 1 1279081350 101#采集器 接地故障
1 2 1279081563 101#采集器 短路故障
1 3 1279081763 101#采集器 断相故障
2 3 1278990819 102#采集器 断相故障
2 3 1279081337 102#采集器 短路故障
2 3 1279081563 102#采集器 断相故障
2 2 1279081579 102#采集器 接地故障
3 1 1279081163 103#采集器 接地故障
3 1 1279081263 103#采集器 接地故障
3 2 1279081359 103#采集器 短路故障
上面的列表是查询出来的数据,现在我想得到每个仪表对应的故障次数,然后求和,详细结果如下面列表(下面列表中数据为手动填写,说明格式),请问这条T-sql 该如何写,望不吝赐教!
序号 仪表名称 接地故障次数 短路故障次数 断相故障次数 总计
1 101#采集器 3 4 1 8
2 102#采集器 4 4 2 10
3 103#采集器 2 4 5 11
1 2 1279081263 101#采集器 短路故障
1 1 1279081350 101#采集器 接地故障
1 2 1279081563 101#采集器 短路故障
1 3 1279081763 101#采集器 断相故障
2 3 1278990819 102#采集器 断相故障
2 3 1279081337 102#采集器 短路故障
2 3 1279081563 102#采集器 断相故障
2 2 1279081579 102#采集器 接地故障
3 1 1279081163 103#采集器 接地故障
3 1 1279081263 103#采集器 接地故障
3 2 1279081359 103#采集器 短路故障
上面的列表是查询出来的数据,现在我想得到每个仪表对应的故障次数,然后求和,详细结果如下面列表(下面列表中数据为手动填写,说明格式),请问这条T-sql 该如何写,望不吝赐教!
序号 仪表名称 接地故障次数 短路故障次数 断相故障次数 总计
1 101#采集器 3 4 1 8
2 102#采集器 4 4 2 10
3 103#采集器 2 4 5 11
DN.Base_Meter_Base.strMeterName as 仪表名称,strFaultName as 故障名称
from DN.Data_Fault inner join DN.Base_Meter_Base
on DN.Data_Fault.intMeterID=DN.Base_Meter_Base.intMeterID inner join DN.Base_Fault_Info on DN.Data_Fault.intFaultID=DN.Base_Fault_Info.intFaultID;
这是查询出下面这个结果集的t-sql仪表ID 故障类型ID 故障时间 仪表名称 故障名称 1 2 1278990839 101#采集器 短路故障
1 2 1279081263 101#采集器 短路故障
1 1 1279081350 101#采集器 接地故障
1 2 1279081563 101#采集器 短路故障
1 3 1279081763 101#采集器 断相故障
2 3 1278990819 102#采集器 断相故障
2 3 1279081337 102#采集器 短路故障
2 3 1279081563 102#采集器 断相故障
2 2 1279081579 102#采集器 接地故障
3 1 1279081163 103#采集器 接地故障
3 1 1279081263 103#采集器 接地故障
3 2 1279081359 103#采集器 短路故障
sum(decode(故障名称,'短路故障',1,0)) 短路故障次数,
sum(decode(故障名称,'断相故障',1,0)) 断相故障次数数,
count(故障时间)
from temp group by 仪表名称,故障时间
DN.Base_Meter_Base.strMeterName as 仪表名称,
count(decode(intFaultID,1,1)) 接地故障次数,
count(decode(intFaultID,2,1)) 短路故障次数,
count(decode(intFaultID,3,1)) 断相故障次数,
count(1) 总次数
from DN.Data_Fault inner join DN.Base_Meter_Base
on DN.Data_Fault.intMeterID=DN.Base_Meter_Base.intMeterID inner join DN.Base_Fault_Info on DN.Data_Fault.intFaultID=DN.Base_Fault_Info.intFaultID
group by DN.Data_Fault.intMeterID,DN.Base_Meter_Base.strMeterName
(id number(2),
type_id number(2),
gz_date number(10),
yq_name varchar2(10),
gz_name varchar2(10))select id,yq_name,sum(decode(gz_name,'接地故障',1,0)) 接地故障次数,
sum(decode(gz_name,'短路故障',1,0)) 短路故障次数,
sum(decode(gz_name,'断相故障',1,0)) 断相故障次数数
from test2 group by id,yq_name
先谢谢各位兄弟热情的帮助!谢谢! 根据这位兄弟的语句 我修改了自己的,呵呵 和
wkc168
(l_db)
差不多哦 但是现在他没有自动求和 ,有什么办法能将每个仪表发生了哪种故障 自动求和出来,比如说 1号仪表 ,发生1号故障 3次 2号故障 4次 这样的。 select strMeterName,sum(decode(strFaultName,'接地故障',1,0)) 接地故障次数,
sum(decode(strFaultName,'短路故障',1,0)) 短路故障次数,
sum(decode(strFaultName,'断相故障',1,0)) 断相故障次数数,
count(intDataTime)
from DN.Data_Fault inner join DN.Base_Meter_Base
on DN.Data_Fault.intMeterID=DN.Base_Meter_Base.intMeterID inner join DN.Base_Fault_Info on DN.Data_Fault.intFaultID=DN.Base_Fault_Info.intFaultID
group by strMeterName,intDataTime;
SELECT 仪表ID,
仪表名称,
SUM(DECODE(故障类型ID, '1', 1, 0)) AS "接地故障次数",
SUM(DECODE(故障类型ID, '2', 1, 0)) AS "短路故障次数",
SUM(DECODE(故障类型ID, '3', 1, 0)) AS "断相故障次数",
COUNT(*) "总计"
FROM TABLE_NAME
GROUP BY 仪表ID, 仪表名称