这是我的存储过程 enter image description here
USE [Alarm_History]
GO
/****** Object: StoredProcedure [dbo].[Alarm_Summary_R_PRM1] Script Date: 09/14/2017 14:47:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
Alarm_Summary_R_PRM1 '2015-09-15 00:02:59','2015-10-15 15:35:40'
*/
ALTER procedure [dbo].[Alarm_Summary_R_PRM1]
(
@SDate datetime,
@EDate datetime
)
as
begin
Create table #Alarm_Summary_Report
(
Cid int NOT NULL PRIMARY KEY ,
kpiparameter_label varchar(Max),
avgonemonthalarmkpi float,
standardkpiparameter_label varchar(Max)
)
create table #Alarm_Month
(
SourceName nvarchar(400),
EventTimeStamp DAteTime,
active int,
acked int,
AlarmClass nvarchar(400)
)
create table #Top_10
(
SourceName nvarchar(400),
Value int
)
create table #Alarm_Avtive1
(
SourceName nvarchar(400),
Count1 int
)
create table #Alarm_Avtive0
(
SourceName nvarchar(400),
Count2 int
)
create table #Alarm_Active_Final
(
SourceName nvarchar(400),
Count3 int
)
insert into #Alarm_Summary_Report values(1,'AlarmPerday',0,'150 AlarmPerDay')
insert into #Alarm_Summary_Report values(2,'AlarmPerHour',0,'5average')
insert into #Alarm_Summary_Report values(3,'Percentage contribution 10 frequent alarm load',0,'1% to 5% max action plans to address deficiencies')
insert into #Alarm_Summary_Report values(4,'Quantity of chattering and fleeting alarms',0,'0x action plans to correct any that occur')
insert into #Alarm_Summary_Report values(5,'unauthorised alarm bypassed',0,'0x alarm attribute changes outsideapproval framework ')
insert into #Alarm_Summary_Report values(6,'unauthorised alarm suppression',0,'0x alarm suppress changes outsideapproval framework ')
insert into #Alarm_Summary_Report values(7,'UnAuthorised Alarm Attribute Changes ',0,'150 AlarmPerDay')
insert into #Alarm_Summary_Report values(8,'System PLC_DCS Alarm and UPS Alarm ',0,'')
insert into #Alarm_Summary_Report values(9,'No of Unacknowledged Alarm ',0,'')
insert into #Alarm_Summary_Report values(10,'Stale Alarm',0,'Less than 5% max on any day with action plans to address ')
Insert into #Alarm_Month
SELECT sourcename
,eventtimestamp
,active
,acked
,AlarmClass
FROM ConditionEvent with (Nolock)
WHERE active in (1)
--and acked in (0,1)
and ConditionEvent.EventTimeStamp between @SDate and @EDate
--CREATE UNIQUE CLUSTERED INDEX IX_1 on #Alarm_Month (EventTimeStamp)
Declare @Avg_Alarm_Month int
Declare @Total_day int
--select @Avg_Alarm_Month = ISNULL(Count(sourcename),0)
--from #Alarm_Month
--where (active = 1 ) and AlarmClass='PROCESS'
--group by Convert(varchar(10),eventtimestamp,103)
--order by Convert(varchar(10),eventtimestamp,103)
--select ISNULL(count(sourcename),0)
--from #Alarm_Month
--where (active = 1 ) and AlarmClass='PROCESS'
--group by Convert(varchar(10),eventtimestamp,103)
--order by Convert(varchar(10),eventtimestamp,103)
SELECT @Avg_Alarm_Month=
count(SourceName)
FROM [Alarm_History].[dbo].[ConditionEvent]
where eventtimestamp between @SDate and @EDate and active = '1' and AlarmClass='PROCESS'
select @Total_day = DATEDIFF(Day, @sdate, @edate)
Insert into #Top_10
select Top 10 SourceName ,Count (SourceName) as Value
from ConditionEvent
where active in (1)
and ConditionEvent.EventTimeStamp between @SDate and @EDate
group by SourceName order by value desc
Declare @summation int
select @summation= sum(Value) from #Top_10
Declare @unauthorisebypass int
select @unauthorisebypass = count( distinct SourceName)
from ConditionEvent
where Disabled='1' and ConditionEvent.EventTimeStamp between @SDate and @EDate
Declare @supress int
select @supress = count( distinct SourceName)
from ConditionEvent
where Suppressed='1' and ConditionEvent.EventTimeStamp between @SDate and @EDate
Declare @systemplc_dcs_upl int
select @systemplc_dcs_upl = ISNULL(Count(sourcename),0)
from #Alarm_Month
where (active = 1 ) and AlarmClass='SYSTEM'
group by Convert(varchar(10),eventtimestamp,103)
order by Convert(varchar(10),eventtimestamp,103)
Insert into #Alarm_Avtive1
select SourceName ,Count (SourceName) as Count1
from ConditionEvent
where active in (1)
and acked in (0)
and ConditionEvent.EventTimeStamp between @SDate and @EDate
group by SourceName order by Count1
Insert into #Alarm_Avtive0
select SourceName ,Count (SourceName) as Count2
from ConditionEvent
where active in (0)
and acked in (0)
and ConditionEvent.EventTimeStamp between @SDate and @EDate
group by SourceName order by Count2
insert into #Alarm_Active_Final
SELECT *FROM #Alarm_Avtive1 WHERE SourceName NOT IN (SELECT SourceName FROM #Alarm_Avtive0 )
union SELECT *FROM #Alarm_Avtive0 WHERE SourceName NOT IN (SELECT SourceName FROM #Alarm_Avtive1 )
Declare @totalcount int
Declare @totalalarmname int
select @totalcount=Count(Count3)from #Alarm_Active_Final
select @totalalarmname=Count(SourceName)from #Alarm_Active_Final
update #Alarm_Summary_Report set avgonemonthalarmkpi = isnull((@Avg_Alarm_Month/@Total_day),0) where Cid = 1
update #Alarm_Summary_Report set avgonemonthalarmkpi = isnull((@Avg_Alarm_Month/@Total_day)/24,0) where Cid = 2
update #Alarm_Summary_Report set avgonemonthalarmkpi= round((((cast(@summation As float))/(cast(@Avg_Alarm_Month As float)))*100),2) where Cid =3
update #Alarm_Summary_Report set avgonemonthalarmkpi =isnull(@unauthorisebypass,0) where Cid =5
update #Alarm_Summary_Report set avgonemonthalarmkpi =isnull(@supress,0) where Cid =6
update #Alarm_Summary_Report set avgonemonthalarmkpi= isnull(@systemplc_dcs_upl,0) where Cid = 8
update #Alarm_Summary_Report set avgonemonthalarmkpi =@totalcount where Cid =9
update #Alarm_Summary_Report set avgonemonthalarmkpi =@totalalarmname where Cid =10
SELECT * FROM #Alarm_Summary_Report
--SELECT * FROM #Top_10
--drop table #Top_10
drop table #Alarm_Month
drop table #Alarm_Avtive1
drop table #Alarm_Avtive0
drop table #Alarm_Active_Final
end
答案 0 :(得分:0)
消除使用tempdb #tables而改为使用Table数据类型:
创建@MyTable TABLE (colname coldatatype)等