>ALTER FUNCTION [dbo].[Get_CardsAssignedNumeric] (@tiMeetID int) >RETURNS varchar(10) AS >BEGIN > Declare @returnValue varchar(10) > set @returnValue=' ' > declare @TotalProcsAssigned int > declare @TotalCardsAssigned int > set @TotalProcsAssigned = (Select count(*) from dbo.meetproc where meetingnumber=@tiMeetID) > set @TotalCardsAssigned = (Select count(*) from dbo.meetproc where meetingnumber=@tiMeetID and cardassigned > 0) > set @ReturnValue=cast(@TotalCardsAssigned as varchar(2))+' of '+cast(@TotalProcsAssigned as varchar(2)) > > return (@returnValue) >END >Do both in one statement, e.g.
select @ReturnValue = cast(coalesce(TotalCardsAssigned,0) as varchar(2) + ' of ' + cast(coalesce(TotalProcsAssigned,0) as varchar(2)) from (select TotalProcAssigned = count(*), TotalCardsAssigned = case when CardAssigned>0 then 1 else 0 end from dbo.meetproc where meetingnumber=@tiMeetID) Xthis way you don't need variables at all.
;with cte_CountsInfo as (select TotalProcAssigned = count(*), TotalCardsAssigned = case when CardAssigned>0 then 1 else 0 end from dbo.meetproc where meetingnumber=@tiMeetID) select @ReturnValue = cast(coalesce(TotalCardsAssigned,0) as varchar(2) + ' of ' + cast(coalesce(TotalProcsAssigned,0) as varchar(2)) from cte_CountsInfo