You could use a table variable with a structure similar to the SELECT from the 3 procedures, insert into it and do the math:
CREATE PROC ... AS
BEGIN
DECLARE @data TABLE(Current_Churn_MTD int, Current_Goal_MTD int, Caption_MTD char(3));
INSERT INTO @data
EXEC [dbo].[sp_KTI_Churn_Current_Year];
INSERT INTO @data
EXEC [dbo].[sp_KTI_Churn_Previous_Year];
INSERT INTO @data
EXEC [dbo].[sp_KTI_Churn_Less_Than_Previous_Year];
SELECT 'MTD' as Total
, SUM(Current_Churn_MTD) as Current_Churn
, SUM(Current_Goal_MTD) as Goal_Churn
FROM @data
;
END
Output:
Total | Current_Churn | Goal_Churn
MTD | 137 | 114
You could also change your Procedure to only return the 2 OUTPUT values:
ALTER PROC ... AS
Current_Churn_MTD int OUTPUT
, @ Current_Goal_MTD OUTPUT
BEGIN
...
END
And use this code instead in the new Procedure:
DECLARE @Previous_Churn_MTD int, @Previous_Goal_MTD int;
EXEC [dbo].[sp_KTI_Churn_Less_Than_Previous_Year] @Previous_Churn_MTD = @Previous_Churn_MTD OUTPUT, @Current_Goal_MTD = @Previous_Goal_MTD OUTPUT;
DECLARE @Current_Churn_MTD int, @Current_Goal_MTD int;
EXEC [dbo].[sp_KTI_Churn_Current_Year] @Current_Churn_MTD = @Current_Churn_MTD OUTPUT, @Current_Goal_MTD = @Current_Goal_MTD OUTPUT;
DECLARE @Left_Than_Previous_Churn_MTD int, @Less_Than_Previous_Goal_MTD int;
EXEC [dbo].[sp_KTI_Churn_Less_Than_Previous_Year] @Left_Than_Previous_Churn_MTD = @Left_Than_Previous_Churn_MTD OUTPUT, @Less_Than_Previous_Goal_MTD = @Less_Than_Previous_Goal_MTD OUTPUT;
SELECT @Previous_Churn_MTD + @Previous_Goal_MTD
+ @Current_Churn_MTD + @Current_Goal_MTD int
+ @Left_Than_Previous_Churn_MTD + @Less_Than_Previous_Goal_MTD;