alter function F_S_GetAvgPrice(@Fc_ID as integer =0, @Pro_ID_VahedMali as integer, @Pro_ID_Anbar as integer=0, @Kal_ID as integer=0, @Dom_ID_Restoration as integer=0, @Tarikh as integer=0, @Saat as integer=0) returns decimal(19,4) as begin declare @res as decimal(19,4) = 0; select @res = floor( sum(Jam) / sum(quantity)) from ( select sdi.quantity ,sdi.quantity * sdai.price Jam from StoreDocument sd inner join StoreDocumentItem sdi on sd.ID = sdi.SD_ID inner join StoreDocumentAccountItem sdai on sdi.ID = sdai.SDI_ID inner join OtherProperties p on sd.Pro_ID_DocType = p.ID where p.Priority = 886 and-- افزایشی sdai.price > 0 and -- قیمت دار شده باشد (@Fc_ID = 0 or sd.fc_ID = @Fc_ID) and (@Pro_ID_VahedMali = 0 or sd.pro_id_vahedMali = @Pro_ID_VahedMali) and (@Kal_ID = 0 or sdi.Kal_ID = @Kal_ID) and (@Dom_ID_Restoration = 0 or sdi.Dom_ID_Restoration = @Dom_ID_Restoration) and (@Tarikh = 0 or sd.Tarikh <= @Tarikh) and (@Saat = 0 or ( case when sd.Tarikh < @Tarikh then 1 -- اگر تاریخ بزرگتر باشد ساعت چک نمی شود when sd.Tarikh = @Tarikh and sd.Saat <= @Saat then 1 -- اگر تاریخ یکسان باشد ساعت چک می شود else 0 end ) = 1) ) x return @res; end