CREATE FUNCTION [dbo].[API_CalcKnokRanks] ( @knokId int = null ) RETURNS TABLE AS RETURN (SELECT KnokId, Sum(r.Measure * f.Weight *f.Factor)/ Sum(f.Weight)*1000 RankValue from Signals CROSS APPLY API_KnokRanks(Signals.KnokId) AS r LEFT JOIN RankFactors f on f.RankId=r.RankId and f.Code=r.Code where Signals.KnokId=ISNULL(@knokId, Signals.KnokId) Group by Signals.KnokId) /* SELECT KnokId, r.*, f.* from Signals CROSS APPLY API_KnokRanks(Signals.KnokId) AS r LEFT JOIN RankFactors f on f.RankId=r.RankId and f.Code=r.Code SELECT SignalId KnokId, Sum(r.Measure * f.Weight *f.Factor)/ Sum(f.Weight) RankValue from Signals CROSS APPLY API_KnokRanks(Signals.KnokId) AS r LEFT JOIN RankFactors f on f.RankId=r.RankId and f.Code=r.Code -- where Signals.KnokId=ISNULL(1, Signals.KnokId) Group by Signals.KnokId */