Click here to Skip to main content
15,887,746 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I have a procedure which is taking too much time to return the table data.
can anyone help me to improve my procedure performance.


Thanks in advance

What I have tried:

ALTER Procedure [dbo].[Prc_GetEmissionsData_MEP_test]
@Vessel varchar(1000),
@DateFrom Datetime,
@Dateto Datetime

as
begin
Declare @Vessel_local varchar(1000),@dateFrom_local datetime,@DatetTo_local datetime
set @Vessel_local = @Vessel
set @dateFrom_local = @DateFrom
set @DatetTo_local = @Dateto
declare @CurrentRowVsl int , @RowsToProcessVsl int
Declare @ID int ,@ReportDate Datetime,@VesselType varchar(100),@VesselID int,@VesselSize decimal(19,2),@SizeName varchar(100),@VoyageID int,@VoyageType varchar(5),@VesselName varchar(100),@ReportType varchar(50),@Days decimal(19,2),@TotalDistanceCovered decimal(19,2),@CargoOnBoard decimal(19,2),@Tot_IFO decimal(19,2),@Tot_IFOLS decimal(19,2),@Tot_MDO decimal(19,2),@Tot_MDOLS decimal(19,2),@avg_sulphur_ifo decimal(19,2),@avg_sulphur_mdo decimal(19,2),@avg_sulphur_ifols decimal(19,2),@avg_sulphur_mdols decimal(19,2),@CO2 decimal(19,2),@EEOI decimal(19,2),@SOx decimal(19,2),@SOxEff decimal(19,2),@NOx decimal(19,2),@NOxEff decimal(19,2),@Reason varchar(500)
Declare @Draft_fwd decimal(19,2),@Draft_Aft decimal(19,2),@ROB_Dep_Ifo decimal(19,2),@ROB_Dep_Ifols decimal(19,2),@ROB_Dep_Mdo decimal(19,2),@ROB_Dep_Mdols decimal(19,2),@ROB_Arr_Ifo decimal(19,2),@ROB_Arr_Ifols decimal(19,2),@ROB_Arr_Mdo decimal(19,2),@ROB_Arr_Mdols decimal(19,2)
Create table #temp
(
ID int ,
ReportDate Datetime,
VesselType varchar(100),
VesselID int,
VesselSize varchar(100),
VoyageID int,
VoyageType varchar(5),
VesselName varchar(100),
ReportType varchar(50),
[Days] decimal(19,2),
TotalDistanceCovered decimal(19,2),
CargoOnBoard decimal(19,2),
Tot_IFO decimal(19,2),
Tot_IFOLS decimal(19,2),
Tot_MDO decimal(19,2),
Tot_MDOLS decimal(19,2),
avg_sulphur_ifo decimal(19,2),
avg_sulphur_mdo decimal(19,2),
avg_sulphur_ifols decimal(19,2),
avg_sulphur_mdols decimal(19,2),
CO2 decimal(19,2),
EEOI decimal(19,2),
SOx decimal(19,2),
SOxEff decimal(19,2),
NOx decimal(19,2),
NOxEff decimal(19,2),
Reason varchar(500),
MEP_vesselid int,
MEP_voyage_id int,
MEP_Date datetime,
MEP_Average decimal(19,2),
MEP_MEKW decimal(19,2),
MEP_MECC decimal(19,2),
MEP_MECYL decimal(19,2),
MEP_AECC decimal(19,2),
MEP_Hours1 decimal(19,2),
MEP_Hours2 decimal(19,2),
MEP_Hours3 decimal(19,2),
MEP_KW1 decimal(19,2),
MEP_KW2 decimal(19,2),
MEP_KW3 decimal(19,2),
MEP_Distance decimal(19,2),
MEP_MaxTemp decimal(19,2),
MEP_MaxNBR decimal(19,2),
MEP_MinTemp decimal(19,2),
MEP_MinNBR decimal(19,2),
MEP_Sea decimal(19,2),
MEP_ER decimal(19,2),
MEP_ScavTemp decimal(19,2),
MEP_ScavPress decimal(19,2),
MEP_AverageTC decimal(19,2),
MEP_BHP decimal(19,2),
MEP_Prod decimal(19,2),
MEP_Cons decimal(19,2),
MEP_ROB decimal(19,2),
MEP_AE decimal(19,2),
MEP_ME decimal(19,2),
MEP_Reason varchar(100),
MEP_SteamingHrs decimal(19,2),
MEP_AE_Other_Reason varchar(500),
Draft_fwd decimal(19,2),
Draft_Aft decimal(19,2),
ROB_Dep_Ifo decimal(19,2),
ROB_Dep_Ifols decimal(19,2),
ROB_Dep_Mdo decimal(19,2),
ROB_Dep_Mdols decimal(19,2),
ROB_Arr_Ifo decimal(19,2),
ROB_Arr_Ifols decimal(19,2),
ROB_Arr_Mdo decimal(19,2),
ROB_Arr_Mdols decimal(19,2)
)
set @ID=1
SELECT * into #tempVessels FROM dbo.Split ( @Vessel_local )
while (@dateFrom_local <= @DatetTo_local)
begin


Select identity(int, 1,1) as RowID, v.vesselid,v.vesselname,vt.vessel_type ,v.summerDWT_MT
into #tempvsl from vessel v inner join tbl_vesselType vt On v.vesselID = vt.vesselid where cast(v.vesselid as nvarchar) in (select * from #tempVessels)

SET @RowsToProcessVsl=@@ROWCOUNT

SET @CurrentRowVsl=0


while(@CurrentRowVsl<@RowsToProcessVsl)
begin
SET @CurrentRowVsl=@CurrentRowVsl+1

select @VesselID = vesselid,@VesselSize =cast(COALESCE(NULLIF(LTRIM(RTRIM(case summerDWT_MT when '-' then '0' else summerDWT_MT end)),''),'0') as decimal(19,2)),@VesselType=vessel_type,@VesselName=VesselName from #tempvsl where RowID = @CurrentRowVsl
if @VesselSize > 0 and @VesselSize <= 5000
set @SizeName = '0-5k'

else if @VesselSize > 5000 and @VesselSize <= 15000
set @SizeName = '5k-15k'

else if @VesselSize > 15000 and @VesselSize <= 35000
set @SizeName = '15k-35k'

else if @VesselSize > 35000 and @VesselSize <= 50000
set @SizeName = '35k-50k'

else if @VesselSize > 50000 and @VesselSize <= 100000
set @SizeName = '50k-100k'

else if @VesselSize > 100000 and @VesselSize <= 200000
set @SizeName = '100k-200k'

else if @VesselSize > 200000 and @VesselSize <= 300000
set @SizeName = '200k-400k'
else
set @SizeName = 'No Info'

--Noon Report Starts here
select identity(int, 1,1) as NoonRowID,vesselid,voyage_id,cast(COALESCE(NULLIF(LTRIM(RTRIM(steaming_time)),''),'0') as decimal(19,2)) as steaming_time,cast(COALESCE(NULLIF(LTRIM(RTRIM(distence_covered)),''),'0') as decimal(19,2)) as distence_covered,cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aeifo)),''),'0') as decimal(19,2)) as consumed_aeifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aemdo)),''),'0') as decimal(19,2)) as consumed_aemdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aeifols)),''),'0') as decimal(19,2)) as consumed_aeifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aemdols)),''),'0') as decimal(19,2)) consumed_aemdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_ifo)),''),'0') as decimal(19,2)) as tc_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_mdo)),''),'0') as decimal(19,2)) as tc_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_ifols)),''),'0') as decimal(19,2)) as tc_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_mdols)),''),'0') as decimal(19,2)) as tc_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifo)),''),'0') as decimal(19,2)) as inherting_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdo)),''),'0') as decimal(19,2)) as inherting_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifols)),''),'0') as decimal(19,2)) as inherting_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdols)),''),'0') as decimal(19,2)) as inherting_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifo)),''),'0') as decimal(19,2)) as drifting_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdo)),''),'0') as decimal(19,2)) as drifting_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifols)),''),'0') as decimal(19,2)) as drifting_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdols)),''),'0') as decimal(19,2)) as drifting_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifo)),''),'0') as decimal(19,2)) as other_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdo)),''),'0') as decimal(19,2)) as other_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifols)),''),'0') as decimal(19,2)) as other_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdols)),''),'0') as decimal(19,2)) as other_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(ifo_ch)),''),'0') as decimal(19,2)) as ifo_ch,cast(COALESCE(NULLIF(LTRIM(RTRIM(mdo_ch)),''),'0') as decimal(19,2)) as mdo_ch,cast(COALESCE(NULLIF(LTRIM(RTRIM(ifols_ch)),''),'0') as decimal(19,2)) as ifols_ch,cast(COALESCE(NULLIF(LTRIM(RTRIM(mdols_ch)),''),'0') as decimal(19,2)) as mdols_ch,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_ifo)),''),'0') as decimal(19,2)) as txt_AE_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_mdo)),''),'0') as decimal(19,2)) as txt_AE_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_ifols)),''),'0') as decimal(19,2)) as txt_AE_ifols ,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_mdols)),''),'0') as decimal(19,2)) as txt_AE_mdols,local_date
into #tempNoon from tbl_noonreport where vesselid=@VesselID and local_datetime = @dateFrom_local


Declare @CurrentRowNoon int , @RowsToProcessNoon int
set @RowsToProcessNoon= @@ROWCOUNT
SET @CurrentRowNoon=0
while(@CurrentRowNoon<@RowsToProcessNoon)
begin

SET @CurrentRowNoon=@CurrentRowNoon+1

select @ReportDate =@dateFrom_local ,@VoyageID =voyage_id ,@ReportType ='Noon Report',@Days =cast(COALESCE(NULLIF(LTRIM(RTRIM(steaming_time)),''),'0') as decimal(19,2))/24,@TotalDistanceCovered =cast(COALESCE(NULLIF(LTRIM(RTRIM(distence_covered)),''),'0') as decimal(19,2)),@Tot_IFO =(cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aeifo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_ifo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(ifo_ch)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_ifo)),''),'0') as decimal(19,2))),@Tot_IFOLS =(cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aeifols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_ifols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(ifols_ch)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_ifols)),''),'0') as decimal(19,2))),@Tot_MDO =(cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aemdo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_mdo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdo)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(mdo_ch)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_mdo)),''),'0') as decimal(19,2))) ,@Tot_MDOLS=(cast(COALESCE(NULLIF(LTRIM(RTRIM(consumed_aemdols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(tc_mdols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdols)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(mdols_ch)),''),'0') as decimal(19,2))+cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_AE_mdols)),''),'0') as decimal(19,2))) from #tempNoon where NoonRowID=@CurrentRowNoon

select @VoyageType = voyage_type,@CargoOnBoard= cast(COALESCE(NULLIF(LTRIM(RTRIM(total_cargo_onboard)),''),'0') as decimal(19,2)) from tbl_fullaway where vesselid=@VesselID and voyage_id=@VoyageID
select @avg_sulphur_ifo= case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'0') as decimal(19,2)) when '0' then '3.3' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'3.3') as decimal(19,2)) end,@avg_sulphur_mdo=case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'0') as decimal(19,2)) when '0' then '1.5' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'1.5') as decimal(19,2)) end,@avg_sulphur_ifols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0') as decimal(19,2)) when '0' then '0.4' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0.4') as decimal(19,2)) end,@avg_sulphur_mdols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0') as decimal(19,2)) when '0' then '0.1' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0.1') as decimal(19,2)) end from tbl_eosparrival where vesselid=@VesselID and voyage_id=@VoyageID
set @CO2 = ((@Tot_IFO + @Tot_IFOLS) * 3.114) + ((@Tot_MDO + @Tot_MDOLS) * 3.186)
set @NOx = ((@Tot_IFO + @Tot_IFOLS + @Tot_MDO + @Tot_MDOLS) * 84) * 0.001
set @SOx = (((@Tot_IFO * @avg_sulphur_ifo) + (@Tot_IFOLS * @avg_sulphur_ifols) + (@Tot_MDO * @avg_sulphur_mdo) + (@Tot_MDOLS * @avg_sulphur_mdols)) * 20) * 0.001

if @CargoOnBoard = 0 or @TotalDistanceCovered = 0 or @CO2 = 0 or @NOx = 0 or @SOx = 0
begin
set @SOxEff = 0
set @EEOI = 0
set @NOxEff = 0

end
else
begin
set @SOxEff = (@SOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
set @EEOI = @CO2 / (@CargoOnBoard * @TotalDistanceCovered) * 1000000
set @NOxEff = (@NOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
end


set @Reason ='Correct'
if @VoyageType = 'L'
begin
if @CargoOnBoard = 0
set @Reason ='CargoOnboard = 0'

else if @EEOI > 20
set @Reason ='EEOI > 20'

else if @CO2 <= 0
set @Reason ='CO2 <= 0'

else if @SOxEff > 2
set @Reason ='SOxEff > 2'

else if @SOx <= 0
set @Reason ='SOx <= 0'

else if @NOxEff > 10
set @Reason ='NOxEff > 10'

else if @NOx <= 0
set @Reason ='NOx <= 0'
end


--- MEP Report Starts here
Declare @MEP_vesselid int,@MEP_voyage_id int,@MEP_Date datetime,@MEP_Average decimal(19,2),@MEP_MEKW decimal(19,2),@MEP_MECC decimal(19,2),@MEP_MECYL decimal(19,2),@MEP_AECC decimal(19,2),@MEP_Hours1 decimal(19,2),@MEP_Hours2 decimal(19,2),@MEP_Hours3 decimal(19,2),@MEP_KW1 decimal(19,2),@MEP_KW2 decimal(19,2),@MEP_KW3 decimal(19,2), @MEP_Distance decimal(19,2),@MEP_MaxTemp decimal(19,2),@MEP_MaxNBR decimal(19,2),@MEP_MinTemp decimal(19,2),@MEP_MinNBR decimal(19,2),@MEP_Sea decimal(19,2),@MEP_ER decimal(19,2),@MEP_ScavTemp decimal(19,2),@MEP_ScavPress decimal(19,2),@MEP_AverageTC decimal(19,2),@MEP_BHP decimal(19,2),@MEP_Prod decimal(19,2),@MEP_Cons decimal(19,2),@MEP_ROB decimal(19,2),@MEP_AE decimal(19,2),@MEP_ME decimal(19,2),@MEP_SteamingHrs decimal(19,2),@MEP_Reason varchar(100),@MEP_AE_Other_Reason as varchar(500)
Declare @MEP_vesselid_EOSP int,@MEP_voyage_id_EOSP int,@MEP_Date_EOSP datetime,@MEP_Average_EOSP decimal(19,2),@MEP_MEKW_EOSP decimal(19,2),@MEP_MECC_EOSP decimal(19,2),@MEP_MECYL_EOSP decimal(19,2),@MEP_AECC_EOSP decimal(19,2),@MEP_Hours1_EOSP decimal(19,2),@MEP_Hours2_EOSP decimal(19,2),@MEP_Hours3_EOSP decimal(19,2),@MEP_KW1_EOSP decimal(19,2),@MEP_KW2_EOSP decimal(19,2),@MEP_KW3_EOSP decimal(19,2),@MEP_Distance_EOSP decimal(19,2),@MEP_MaxTemp_EOSP decimal(19,2),@MEP_MaxNBR_EOSP decimal(19,2),@MEP_MinTemp_EOSP decimal(19,2),@MEP_MinNBR_EOSP decimal(19,2),@MEP_Sea_EOSP decimal(19,2),@MEP_ER_EOSP decimal(19,2),@MEP_ScavTemp_EOSP decimal(19,2),@MEP_ScavPress_EOSP decimal(19,2),@MEP_AverageTC_EOSP decimal(19,2),@MEP_BHP_EOSP decimal(19,2),@MEP_Prod_EOSP decimal(19,2),@MEP_Cons_EOSP decimal(19,2),@MEP_ROB_EOSP decimal(19,2),@MEP_AE_EOSP decimal(19,2),@MEP_ME_EOSP decimal(19,2),@MEP_SteamingHrs_EOSP decimal(19,2),@MEP_Reason_EOSP varchar(100),@MEP_AE_Other_Reason_EOSP as varchar(500)
Declare @RowsToProcessMEP int,@CurrentRowMEP int

select identity(int, 1,1) as MEPRowID,vesselid,voyage_id,convert(datetime, [date]) as MEP_Date,cast(COALESCE(NULLIF(LTRIM(RTRIM(Average)),''),'0') as decimal(19,2)) as Average,cast(COALESCE(NULLIF(LTRIM(RTRIM(Distance)),''),'0') as decimal(19,2)) as Distance,cast(COALESCE(NULLIF(LTRIM(RTRIM(MaxTemp)),''),'0') as decimal(19,2)) as MaxTemp,cast(COALESCE(NULLIF(LTRIM(RTRIM(MaxNBR)),''),'0') as decimal(19,2)) as MaxNBR,cast(COALESCE(NULLIF(LTRIM(RTRIM(MinTemp)),''),'0') as decimal(19,2)) as MinTemp,cast(COALESCE(NULLIF(LTRIM(RTRIM(MinNBR)),''),'0') as decimal(19,2)) as MinNBR,cast(COALESCE(NULLIF(LTRIM(RTRIM(Sea)),''),'0') as decimal(19,2)) as Sea,cast(COALESCE(NULLIF(LTRIM(RTRIM(Er)),''),'0') as decimal(19,2)) as Er,cast(COALESCE(NULLIF(LTRIM(RTRIM(ScavTemp)),''),'0') as decimal(19,2)) as ScavTemp,cast(COALESCE(NULLIF(LTRIM(RTRIM(ScavPress)),''),'0') as decimal(19,2)) as ScavPress,cast(COALESCE(NULLIF(LTRIM(RTRIM(AverageTC)),''),'0') as decimal(19,2)) as AverageTC,cast(COALESCE(NULLIF(LTRIM(RTRIM(BHP)),''),'0') as decimal(19,2)) as BHP,cast(COALESCE(NULLIF(LTRIM(RTRIM(MEKW)),''),'0') as decimal(19,2)) as MEKW,cast(COALESCE(NULLIF(LTRIM(RTRIM(MECC)),''),'0') as decimal(19,2)) as MECC,cast(COALESCE(NULLIF(LTRIM(RTRIM(MECYL)),''),'0') as decimal(19,2)) as MECYL,cast(COALESCE(NULLIF(LTRIM(RTRIM(AECC)),''),'0') as decimal(19,2)) as AECC,cast(COALESCE(NULLIF(LTRIM(RTRIM(Hours1)),''),'0') as decimal(19,2)) as Hours1,cast(COALESCE(NULLIF(LTRIM(RTRIM(Hours2)),''),'0') as decimal(19,2)) as Hours2,cast(COALESCE(NULLIF(LTRIM(RTRIM(Hours3)),''),'0') as decimal(19,2)) as Hours3,cast(COALESCE(NULLIF(LTRIM(RTRIM(KW1)),''),'0') as decimal(19,2)) as KW1,cast(COALESCE(NULLIF(LTRIM(RTRIM(KW2)),''),'0') as decimal(19,2)) as KW2,cast(COALESCE(NULLIF(LTRIM(RTRIM(KW3)),''),'0') as decimal(19,2)) as KW3,Reason,cast(COALESCE(NULLIF(LTRIM(RTRIM(Prod)),''),'0') as decimal(19,2)) as Prod,cast(COALESCE(NULLIF(LTRIM(RTRIM(Cons)),''),'0') as decimal(19,2)) as Cons,cast(COALESCE(NULLIF(LTRIM(RTRIM(Rob)),''),'0') as decimal(19,2)) as Rob,cast(COALESCE(NULLIF(LTRIM(RTRIM(ae)),''),'0') as decimal(19,2)) as ae,cast(COALESCE(NULLIF(LTRIM(RTRIM(me)),''),'0') as decimal(19,2)) as me,cast(COALESCE(NULLIF(LTRIM(RTRIM(Steaming_Hrs)),''),'0') as decimal(19,2)) as Steaming_Hrs,AE_Other_Reason
into #TempMEP from tbl_mep where vesselid=@VesselID and voyage_id=@VoyageID and Datetime_new = @dateFrom_local order by id desc

set @RowsToProcessMEP = @@ROWCOUNT
SET @CurrentRowMEP=0


SET @CurrentRowMEP=@CurrentRowMEP+1
select @MEP_vesselid = vesselid,@MEP_voyage_id = voyage_id,@MEP_Date = convert(datetime,MEP_Date),@MEP_Average = Average,@MEP_MEKW = MEKW,@MEP_MECC = MECC,@MEP_MECYL = MECYL,@MEP_AECC = AECC,@MEP_Hours1 = Hours1,@MEP_Hours2 = Hours2,@MEP_Hours3 = Hours3,@MEP_KW1 = KW1,@MEP_KW2 = KW2,@MEP_KW3 = KW3, @MEP_Distance = Distance,@MEP_MaxTemp = MaxTemp ,@MEP_MaxNBR = MaxNBR,@MEP_MinTemp = MinTemp,@MEP_MinNBR = MinNBR,@MEP_Sea = Sea,@MEP_ER=ER,@MEP_ScavTemp=ScavTemp,@MEP_ScavPress=ScavPress,@MEP_AverageTC=AverageTC,@MEP_BHP=BHP,@MEP_Prod=Prod,@MEP_Cons=Cons,@MEP_ROB=ROB,@MEP_AE=AE,@MEP_ME=ME,@MEP_SteamingHrs=Steaming_Hrs,@MEP_Reason = Reason, @MEP_AE_Other_Reason = AE_Other_Reason from #TempMEP where MEPRowID=@CurrentRowMEP
if @RowsToProcessMEP = 2
begin
SET @CurrentRowMEP=@CurrentRowMEP+1
select @MEP_vesselid_EOSP = vesselid,@MEP_voyage_id_EOSP = voyage_id,@MEP_Date_EOSP = convert(datetime,MEP_Date),@MEP_Average_EOSP = Average,@MEP_MEKW_EOSP = MEKW,@MEP_MECC_EOSP = MECC,@MEP_MECYL_EOSP = MECYL,@MEP_AECC_EOSP = AECC,@MEP_Hours1_EOSP = Hours1,@MEP_Hours2_EOSP = Hours2,@MEP_Hours3_EOSP = Hours3,@MEP_KW1_EOSP = KW1,@MEP_KW2_EOSP = KW2,@MEP_KW3_EOSP = KW3, @MEP_Distance_EOSP=Distance,@MEP_MaxTemp_EOSP=MaxTemp ,@MEP_MaxNBR_EOSP=MaxNBR,@MEP_MinTemp_EOSP=MinTemp,@MEP_MinNBR_EOSP=MinNBR,@MEP_Sea_EOSP=Sea,@MEP_ER_EOSP=ER,@MEP_ScavTemp_EOSP=ScavTemp,@MEP_ScavPress_EOSP=ScavPress,@MEP_AverageTC_EOSP=AverageTC,@MEP_BHP_EOSP=BHP,@MEP_Prod_EOSP=Prod,@MEP_Cons_EOSP=Cons,@MEP_ROB_EOSP=ROB,@MEP_AE_EOSP=AE,@MEP_ME_EOSP=ME,@MEP_SteamingHrs_EOSP=Steaming_Hrs,@MEP_Reason_EOSP = Reason,@MEP_AE_Other_Reason_EOSP = AE_Other_Reason from #TempMEP where MEPRowID=@CurrentRowMEP
END


drop table #TempMEP
--- MEP Report Ends here


if @RowsToProcessNoon != 0
begin

insert into #temp(ID,ReportDate,VesselType,VesselID,VesselSize,VoyageID,VoyageType,VesselName,ReportType,[Days],TotalDistanceCovered,CargoOnBoard,Tot_IFO,Tot_IFOLS,Tot_MDO,Tot_MDOLS,avg_sulphur_ifo,avg_sulphur_mdo,avg_sulphur_ifols,avg_sulphur_mdols,CO2,EEOI,SOx,SOxEff,NOx,NOxEff,Reason, MEP_vesselid,MEP_voyage_id,MEP_Date,MEP_Average,MEP_MEKW,MEP_MECC,MEP_MECYL,MEP_AECC,MEP_Hours1,MEP_Hours2,MEP_Hours3,MEP_KW1,MEP_KW2,MEP_KW3,MEP_Distance,MEP_MaxTemp,MEP_MaxNBR,MEP_MinTemp,MEP_MinNBR,MEP_Sea,MEP_ER,MEP_ScavTemp,MEP_ScavPress,MEP_AverageTC,MEP_BHP,MEP_Prod,MEP_Cons,MEP_ROB,MEP_AE,MEP_ME,MEP_SteamingHrs,MEP_Reason,MEP_AE_Other_Reason)
values(@ID,@ReportDate,@VesselType,@VesselID,@SizeName,@VoyageID,@VoyageType,@VesselName,@ReportType,@Days,@TotalDistanceCovered,@CargoOnBoard,@Tot_IFO,@Tot_IFOLS,@Tot_MDO,@Tot_MDOLS,@avg_sulphur_ifo,@avg_sulphur_mdo,@avg_sulphur_ifols,@avg_sulphur_mdols,@CO2,@EEOI,@SOx,@SOxEff,@NOx,@NOxEff,@Reason,@MEP_vesselid,@MEP_voyage_id,@MEP_Date,@MEP_Average,@MEP_MEKW,@MEP_MECC,@MEP_MECYL,@MEP_AECC,@MEP_Hours1,@MEP_Hours2,@MEP_Hours3,@MEP_KW1,@MEP_KW2,@MEP_KW3,@MEP_Distance,@MEP_MaxTemp,@MEP_MaxNBR,@MEP_MinTemp,@MEP_MinNBR,@MEP_Sea,@MEP_ER,@MEP_ScavTemp,@MEP_ScavPress,@MEP_AverageTC,@MEP_BHP,@MEP_Prod,@MEP_Cons,@MEP_ROB,@MEP_AE,@MEP_ME,@MEP_SteamingHrs,@MEP_Reason,@MEP_AE_Other_Reason )

Set @ID = @ID+1
end

End
drop table #tempNoon
-- Noon Report Ends here

-- EOSP Report Starts here

select identity(int, 1,1) as EOSPRowID,voyage_id,vesselid,cast(COALESCE(NULLIF(LTRIM(RTRIM(streaming_days)),''),'0') as decimal(19,2)) as streaming_days,cast(COALESCE(NULLIF(LTRIM(RTRIM(distance_streamed_last_noon)),''),'0') as decimal(19,2)) as distance_streamed_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(meae_ifo)),''),'0') as decimal(19,2)) as meae_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(meae_mdo)),''),'0') as decimal(19,2)) as meae_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(meae_ifols)),''),'0') as decimal(19,2)) as meae_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(meae_mdols)),''),'0') as decimal(19,2)) as meae_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(tank_cleaning_ifo_last_noon)),''),'0') as decimal(19,2)) as tank_cleaning_ifo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(tank_cleaning_mdo_last_noon)),''),'0') as decimal(19,2)) as tank_cleaning_mdo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(tank_cleaning_ifols_last_noon)),''),'0') as decimal(19,2)) as tank_cleaning_ifols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(tank_cleaning_mdols_last_noon)),''),'0') as decimal(19,2)) as tank_cleaning_mdols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifo_last_noon)),''),'0') as decimal(19,2)) as inherting_ifo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdo_last_noon)),''),'0') as decimal(19,2)) as inherting_mdo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_ifols_last_noon)),''),'0') as decimal(19,2)) as inherting_ifols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(inherting_mdols_last_noon)),''),'0') as decimal(19,2)) as inherting_mdols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifo_last_noon)),''),'0') as decimal(19,2)) as drifting_ifo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdo_last_noon)),''),'0') as decimal(19,2)) as drifting_mdo_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_ifols_last_noon)),''),'0') as decimal(19,2)) as drifting_ifols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(drifting_mdols_last_noon)),''),'0') as decimal(19,2)) as drifting_mdols_last_noon,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifo)),''),'0') as decimal(19,2)) as other_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdo)),''),'0') as decimal(19,2)) as other_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifols)),''),'0') as decimal(19,2)) as other_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdols)),''),'0') as decimal(19,2)) as other_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_NoonBCifo)),''),'0') as decimal(19,2)) as txt_NoonBCifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_noonBCmdo)),''),'0') as decimal(19,2)) as txt_noonBCmdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_noonBCifols)),''),'0') as decimal(19,2)) as txt_noonBCifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(txt_noonBCmdols)),''),'0') as decimal(19,2)) as txt_noonBCmdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(lastnoonAE_ifo)),''),'0') as decimal(19,2)) as lastnoonAE_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(lastnoonAE_mdo)),''),'0') as decimal(19,2)) as lastnoonAE_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(lastnoonAE_ifols)),''),'0') as decimal(19,2)) as lastnoonAE_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(lastnoonAE_mdols)),''),'0') as decimal(19,2)) as lastnoonAE_mdols,date_sea_passage_end,cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'3.3') as decimal(19,2)) as avg_sulphur_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'1.5') as decimal(19,2)) as avg_sulphur_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0.4') as decimal(19,2)) as avg_sulphur_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0.1') as decimal(19,2)) as avg_sulphur_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(ROB_IFO)),''),'0') as decimal(19,2)) as ROB_IFO,cast(COALESCE(NULLIF(LTRIM(RTRIM(ROB_IFOLS)),''),'0') as decimal(19,2)) as ROB_IFOLS,cast(COALESCE(NULLIF(LTRIM(RTRIM(ROB_MDO)),''),'0') as decimal(19,2)) as ROB_MDO,cast(COALESCE(NULLIF(LTRIM(RTRIM(ROB_MDOLS)),''),'0') as decimal(19,2)) as ROB_MDOLS
into #tempEOSP from tbl_eosparrival where vesselid = @VesselID and Datetime_SeaPassage_end = @dateFrom_local


Declare @CurrentRowEOSP int , @RowsToProcessEOSP int
set @RowsToProcessEOSP= @@ROWCOUNT
SET @CurrentRowEOSP=0
while(@CurrentRowEOSP<@RowsToProcessEOSP)
begin

SET @CurrentRowEOSP=@CurrentRowEOSP+1

select @ReportDate =@dateFrom_local ,@VoyageID =voyage_id ,@ReportType ='EOSP',@Days = streaming_days/24,@TotalDistanceCovered =distance_streamed_last_noon,@Tot_IFO =(meae_ifo+tank_cleaning_ifo_last_noon+inherting_ifo_last_noon+drifting_ifo_last_noon+other_ifo+txt_NoonBCifo+lastnoonAE_ifo),@Tot_IFOLS =(meae_ifols+tank_cleaning_ifols_last_noon+inherting_ifols_last_noon+drifting_ifols_last_noon+other_ifols+txt_NoonBCifols+lastnoonAE_ifols),@Tot_MDO =(meae_mdo+tank_cleaning_mdo_last_noon+inherting_mdo_last_noon+drifting_mdo_last_noon+other_mdo+txt_NoonBCmdo+lastnoonAE_mdo) ,@Tot_MDOLS=(meae_mdols+tank_cleaning_mdols_last_noon+inherting_mdols_last_noon+drifting_mdols_last_noon+other_mdols+txt_NoonBCmdols+lastnoonAE_mdols),@avg_sulphur_ifo= case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'0') as decimal(19,2)) when '0' then '3.3' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'3.3') as decimal(19,2)) end,@avg_sulphur_mdo=case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'0') as decimal(19,2)) when '0' then '1.5' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'1.5') as decimal(19,2)) end,@avg_sulphur_ifols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0') as decimal(19,2)) when '0' then '0.4' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0.4') as decimal(19,2)) end,@avg_sulphur_mdols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0') as decimal(19,2)) when '0' then '0.1' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0.1') as decimal(19,2)) end,@ROB_Arr_Ifo = ROB_IFO ,@ROB_Arr_Ifols = ROB_IFOLS,@ROB_Arr_Mdo = ROB_MDO,@ROB_Arr_Mdols= ROB_MDOLS from #tempEOSP where EOSPRowID=@CurrentRowEOSP

select @VoyageType = voyage_type,@CargoOnBoard= cast(COALESCE(NULLIF(LTRIM(RTRIM(total_cargo_onboard)),''),'0') as decimal(19,2)),@Draft_fwd=cast(COALESCE(NULLIF(LTRIM(RTRIM(dep_draftFWD)),''),'0') as decimal(19,2)),@Draft_Aft=cast(COALESCE(NULLIF(LTRIM(RTRIM(dep_draftAFT)),''),'0') as decimal(19,2)),@ROB_Dep_Ifo=cast(COALESCE(NULLIF(LTRIM(RTRIM(Rob_Dep_ifo)),''),'0') as decimal(19,2)),@ROB_Dep_Ifols=cast(COALESCE(NULLIF(LTRIM(RTRIM(Rob_Dep_ifols)),''),'0') as decimal(19,2)),@ROB_Dep_Mdo=cast(COALESCE(NULLIF(LTRIM(RTRIM(Rob_Dep_mdo)),''),'0') as decimal(19,2)),@ROB_Dep_Mdols=cast(COALESCE(NULLIF(LTRIM(RTRIM(Rob_Dep_mdols)),''),'0') as decimal(19,2)) from tbl_fullaway where vesselid=@VesselID and voyage_id=@VoyageID

set @CO2 = ((@Tot_IFO + @Tot_IFOLS) * 3.114) + ((@Tot_MDO + @Tot_MDOLS) * 3.186)
set @NOx = ((@Tot_IFO + @Tot_IFOLS + @Tot_MDO + @Tot_MDOLS) * 84) * 0.001
set @SOx = (((@Tot_IFO * @avg_sulphur_ifo) + (@Tot_IFOLS * @avg_sulphur_ifols) + (@Tot_MDO * @avg_sulphur_mdo) + (@Tot_MDOLS * @avg_sulphur_mdols)) * 20) * 0.001

if @CargoOnBoard = 0 or @TotalDistanceCovered = 0 or @CO2 = 0 or @NOx = 0 or @SOx = 0
begin
set @SOxEff = 0
set @EEOI = 0
set @NOxEff = 0

end
else
begin
set @SOxEff = (@SOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
set @EEOI = @CO2 / (@CargoOnBoard * @TotalDistanceCovered) * 1000000
set @NOxEff = (@NOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
end


set @Reason ='Correct'
if @VoyageType = 'L'
begin
if @CargoOnBoard = 0
set @Reason ='CargoOnboard = 0'

else if @EEOI > 20
set @Reason ='EEOI > 20'

else if @CO2 <= 0
set @Reason ='CO2 <= 0'

else if @SOxEff > 2
set @Reason ='SOxEff > 2'

else if @SOx <= 0
set @Reason ='SOx <= 0'

else if @NOxEff > 10
set @Reason ='NOxEff > 10'

else if @NOx <= 0
set @Reason ='NOx <= 0'
end

if @RowsToProcessEOSP != 0
begin
insert into #temp(ID,ReportDate,VesselType,VesselID,VesselSize,VoyageID,VoyageType,VesselName,ReportType,[Days],TotalDistanceCovered,CargoOnBoard,Tot_IFO,Tot_IFOLS,Tot_MDO,Tot_MDOLS,avg_sulphur_ifo,avg_sulphur_mdo,avg_sulphur_ifols,avg_sulphur_mdols,CO2,EEOI,SOx,SOxEff,NOx,NOxEff,Reason,MEP_vesselid,MEP_voyage_id,MEP_Date,MEP_Average,MEP_MEKW,MEP_MECC,MEP_MECYL,MEP_AECC,MEP_Hours1,MEP_Hours2,MEP_Hours3,MEP_KW1,MEP_KW2,MEP_KW3,MEP_Distance,MEP_MaxTemp,MEP_MaxNBR,MEP_MinTemp,MEP_MinNBR,MEP_Sea,MEP_ER,MEP_ScavTemp,MEP_ScavPress,MEP_AverageTC,MEP_BHP,MEP_Prod,MEP_Cons,MEP_ROB,MEP_AE,MEP_ME,MEP_SteamingHrs,MEP_Reason,MEP_AE_Other_Reason,ROB_Arr_IFO,ROB_Arr_IFOLS,ROB_Arr_MDO,ROB_Arr_MDOLS,Draft_fwd,Draft_AFT,Rob_Dep_ifo,Rob_Dep_ifols,Rob_Dep_mdo,Rob_Dep_mdols)
values(@ID,@ReportDate,@VesselType,@VesselID,@SizeName,@VoyageID,@VoyageType,@VesselName,@ReportType,@Days,@TotalDistanceCovered,@CargoOnBoard,@Tot_IFO,@Tot_IFOLS,@Tot_MDO,@Tot_MDOLS,@avg_sulphur_ifo,@avg_sulphur_mdo,@avg_sulphur_ifols,@avg_sulphur_mdols,@CO2,@EEOI,@SOx,@SOxEff,@NOx,@NOxEff,@Reason,@MEP_vesselid_EOSP,@MEP_voyage_id_EOSP,@MEP_Date_EOSP,@MEP_Average_EOSP,@MEP_MEKW_EOSP,@MEP_MECC_EOSP,@MEP_MECYL_EOSP,@MEP_AECC_EOSP,@MEP_Hours1_EOSP,@MEP_Hours2_EOSP,@MEP_Hours3_EOSP,@MEP_KW1_EOSP,@MEP_KW2_EOSP,@MEP_KW3_EOSP,@MEP_Distance_EOSP,@MEP_MaxTemp_EOSP,@MEP_MaxNBR_EOSP,@MEP_MinTemp_EOSP,@MEP_MinNBR_EOSP,@MEP_Sea_EOSP,@MEP_ER_EOSP,@MEP_ScavTemp_EOSP,@MEP_ScavPress_EOSP,@MEP_AverageTC_EOSP,@MEP_BHP_EOSP,@MEP_Prod_EOSP,@MEP_Cons_EOSP,@MEP_ROB_EOSP,@MEP_AE_EOSP,@MEP_ME_EOSP,@MEP_SteamingHrs_EOSP,@MEP_Reason_EOSP,@MEP_AE_Other_Reason_EOSP,@ROB_Arr_Ifo,@ROB_Arr_Ifols,@ROB_Arr_Mdo,@ROB_Arr_Mdols,@Draft_fwd,@Draft_Aft,@ROB_Dep_Ifo,@ROB_Dep_Ifols,@ROB_Dep_Mdo,@ROB_Dep_Mdols)
Set @ID = @ID+1
end

End
drop table #tempEOSP

-- EOSP Report Ends here
-- IDLE Report Starts here

select identity(int, 1,1) as IDLERowID,record_id,vesselid,voyage_id,cast(COALESCE(NULLIF(LTRIM(RTRIM(ME_ifo)),''),'0') as decimal(19,2)) as ME_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(ME_mdo)),''),'0') as decimal(19,2)) as ME_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(ME_ifols)),''),'0') as decimal(19,2)) as ME_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(ME_mdols)),''),'0') as decimal(19,2)) as ME_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(AE_ifo)),''),'0') as decimal(19,2)) as AE_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(AE_mdo)),''),'0') as decimal(19,2)) as AE_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(AE_ifols)),''),'0') as decimal(19,2)) as AE_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(AE_mdols)),''),'0') as decimal(19,2)) as AE_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(TC_ifo)),''),'0') as decimal(19,2)) as TC_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(TC_mdo)),''),'0') as decimal(19,2)) as TC_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(TC_ifols)),''),'0') as decimal(19,2)) as TC_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(TC_mdols)),''),'0') as decimal(19,2)) as TC_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(Inherting_ifo)),''),'0') as decimal(19,2)) as Inherting_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(Inherting_mdo)),''),'0') as decimal(19,2)) as Inherting_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(Inherting_ifols)),''),'0') as decimal(19,2)) as Inherting_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(Inherting_mdols)),''),'0') as decimal(19,2)) as Inherting_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(Heating_ifo)),''),'0') as decimal(19,2)) as Heating_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(Heating_mdo)),''),'0') as decimal(19,2)) as Heating_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(Heating_ifols)),''),'0') as decimal(19,2)) as Heating_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(Heating_mdols)),''),'0') as decimal(19,2)) as Heating_mdols,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifo)),''),'0') as decimal(19,2)) as other_ifo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdo)),''),'0') as decimal(19,2)) as other_mdo,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_ifols)),''),'0') as decimal(19,2)) as other_ifols,cast(COALESCE(NULLIF(LTRIM(RTRIM(other_mdols)),''),'0') as decimal(19,2)) as other_mdols, port_date,port_time
into #tempIDLE from tbl_idlereport where vesselid = @VesselID and Port_Datetime = @dateFrom_local


Declare @CurrentRowIDLE int , @RowsToProcessIDLE int
set @RowsToProcessIDLE= @@ROWCOUNT
SET @CurrentRowIDLE=0
while(@CurrentRowIDLE<@RowsToProcessIDLE)
begin

SET @CurrentRowIDLE=@CurrentRowIDLE+1
Declare @port_date as datetime,@Pre_port_date as datetime ,@EOSP_Date as datetime
select @ReportDate =@dateFrom_local ,@VoyageID =voyage_id ,@ReportType ='IDLE',@TotalDistanceCovered =0,@Tot_IFO =(ME_ifo+AE_ifo+TC_ifo+Inherting_ifo+Heating_ifo+other_ifo),@Tot_IFOLS =(ME_ifols+AE_ifols+TC_ifols+Inherting_ifols+Heating_ifols+other_ifols),@Tot_MDO =(ME_mdo+AE_mdo+TC_mdo+Inherting_mdo+Heating_mdo+other_mdo) ,@Tot_MDOLS=(ME_mdols+AE_mdols+TC_mdols+Inherting_mdols+Heating_mdols+other_mdols),@port_date=convert(datetime, replace(port_date,'-','/')+' '+ port_time) from #tempIDLE where IDLERowID=@CurrentRowIDLE


declare @ppp nvarchar(30)
set @Pre_port_date=''
set @EOSP_Date=''
select @avg_sulphur_ifo= case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'0') as decimal(19,2)) when '0' then '3.3' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifo)),''),'3.3') as decimal(19,2)) end,@avg_sulphur_mdo=case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'0') as decimal(19,2)) when '0' then '1.5' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdo)),''),'1.5') as decimal(19,2)) end,@avg_sulphur_ifols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0') as decimal(19,2)) when '0' then '0.4' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_ifols)),''),'0.4') as decimal(19,2)) end,@avg_sulphur_mdols =case cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0') as decimal(19,2)) when '0' then '0.1' else cast(COALESCE(NULLIF(LTRIM(RTRIM(avg_sulphur_mdols)),''),'0.1') as decimal(19,2)) end ,@EOSP_Date =convert(datetime,replace(date_sea_passage_end,'-','/')+ ' ' + time_sea_passage_end) from tbl_eosparrival where vesselid=@VesselID and voyage_id=@VoyageID
select top 1 @Pre_port_date = convert(datetime, replace(port_date,'-','/')+' '+ port_time) from tbl_idlereport where voyage_id =@VoyageID and vesselid=@VesselID and convert(datetime, replace(port_date,'-','/')+' '+ port_time) < convert(datetime,@port_date) order by convert(datetime, replace(port_date,'-','/')+' '+ port_time) desc
select top 1 @ppp = (replace(port_date,'-','/')+' '+ port_time) from tbl_idlereport where voyage_id =@VoyageID and vesselid=@VesselID and convert(datetime, replace(port_date,'-','/')+' '+ port_time) < convert(datetime,@port_date) order by convert(datetime, replace(port_date,'-','/')+' '+ port_time) desc

if @Pre_port_date != ''
begin
set @Days = DATEDIFF(hour,@Pre_port_date,@port_date)

if @Days = 0
begin
if @EOSP_Date = ''
set @Days = -1
else
set @Days = DATEDIFF(hour,@EOSP_Date,@port_date)

end
end
else
begin
if @EOSP_Date = ''
set @Days = -1
else
set @Days = DATEDIFF(hour,@EOSP_Date,@port_date)

end

select @VoyageType = voyage_type,@CargoOnBoard= cast(COALESCE(NULLIF(LTRIM(RTRIM(total_cargo_onboard)),''),'0') as decimal(19,2)) from tbl_fullaway where vesselid=@VesselID and voyage_id=@VoyageID

set @CO2 = ((@Tot_IFO + @Tot_IFOLS) * 3.114) + ((@Tot_MDO + @Tot_MDOLS) * 3.186)
set @NOx = ((@Tot_IFO + @Tot_IFOLS + @Tot_MDO + @Tot_MDOLS) * 84) * 0.001
set @SOx = (((@Tot_IFO * @avg_sulphur_ifo) + (@Tot_IFOLS * @avg_sulphur_ifols) + (@Tot_MDO * @avg_sulphur_mdo) + (@Tot_MDOLS * @avg_sulphur_mdols)) * 20) * 0.001

if @CargoOnBoard = 0 or @TotalDistanceCovered = 0 or @CO2 = 0 or @NOx = 0 or @SOx = 0
begin
set @SOxEff = 0
set @EEOI = 0
set @NOxEff = 0

end
else
begin
set @SOxEff = (@SOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
set @EEOI = @CO2 / (@CargoOnBoard * @TotalDistanceCovered) * 1000000
set @NOxEff = (@NOx * 1000000) / (@CargoOnBoard * @TotalDistanceCovered)
end


set @Reason ='Correct'
if @VoyageType = 'L'
begin
if @CargoOnBoard = 0
set @Reason ='CargoOnboard = 0'

else if @EEOI > 20
set @Reason ='EEOI > 20'

else if @CO2 <= 0
set @Reason ='CO2 <= 0'

else if @SOxEff > 2
set @Reason ='SOxEff > 2'

else if @SOx <= 0
set @Reason ='SOx <= 0'

else if @NOxEff > 10
set @Reason ='NOxEff > 10'

else if @NOx <= 0
set @Reason ='NOx <= 0'
end

if @RowsToProcessIDLE != 0
begin
if @Days = -1
set @Reason ='Date Not Available'
else
set @Days = @Days/24
insert into #temp(ID,ReportDate,VesselType,VesselID,VesselSize,VoyageID,VoyageType,VesselName,ReportType,[Days],TotalDistanceCovered,CargoOnBoard,Tot_IFO,Tot_IFOLS,Tot_MDO,Tot_MDOLS,avg_sulphur_ifo,avg_sulphur_mdo,avg_sulphur_ifols,avg_sulphur_mdols,CO2,EEOI,SOx,SOxEff,NOx,NOxEff,Reason)
values(@ID,@ReportDate,@VesselType,@VesselID,@SizeName,@VoyageID,@VoyageType,@VesselName,@ReportType,@Days,@TotalDistanceCovered,@CargoOnBoard,@Tot_IFO,@Tot_IFOLS,@Tot_MDO,@Tot_MDOLS,@avg_sulphur_ifo,@avg_sulphur_mdo,@avg_sulphur_ifols,@avg_sulphur_mdols,@CO2,@EEOI,@SOx,@SOxEff,@NOx,@NOxEff,@Reason)
Set @ID = @ID+1
end

End

drop table #tempIDLE

-- IDLE Report Ends here
end
drop table #tempvsl

set @dateFrom_local = DATEADD(day,1,@dateFrom_local)
end
drop table #tempVessels
select * from #temp
end
Posted
Updated 17-May-16 23:55pm
Comments
Magic Wonder 18-May-16 5:50am    
It is also taking too much time to read it, understand it, and if link broken then re-read. :-(
Rajeev Raj 18-May-16 6:09am    
so sorry... but I am stuck :(
Magic Wonder 18-May-16 23:35pm    
It's okay. You check your requirement and build your queries in such a way that these should be simple and if possible break into small set of scripts.

1 solution

Hi,

You are the only one who can help yourself. Check below link which will help you to speed up your queries.

How Do I Speed Up My Select * Query Of "530,000" Rows[^]


Hope this will help you.

Cheers
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900