Now i have modified this.
Please see . its still failing
DECLARE @AdjustmentBatch_ID INT
DECLARE @Platform VARCHAR(20), @Type INT, @lStr NVARCHAR(1000),@TableName VARCHAR(20),@ColName VARCHAR(20)
,@parameters NVARCHAR(30)
SELECT @Platform = '',@lStr = '',@TableName = '',@ColName = '', @AdjustmentBatch_ID = 15
DECLARE @tblAmountOut TABLE(LegalEntity VARCHAR(10), Amount MONEY )
--BEGIN TRY
SELECT @Type = type,@Platform = Platform FROM dbo.Adjustment_Batch ab(NOLOCK)
WHERE ab.AdjustmentBatch_ID = @AdjustmentBatch_ID AND ab.Status = 1
SELECT @TableName = CASE
WHEN @Type = 1 THEN 'GLEntry'
WHEN @Type = 2 THEN 'GrossPremium'
WHEN @Type = 3 THEN 'GrossClaim'
WHEN @Type = 4 THEN 'CededPremium'
WHEN @Type = 5 THEN 'CededClaim'
END,
@ColName = CASE
WHEN @Type = 1 THEN 'BaseAmount'
WHEN @Type = 2 THEN 'GrossWrittenPremium'
WHEN @Type = 3 THEN 'IndemnityPaidLoss'
WHEN @Type = 4 THEN 'CededWrittenPremium'
WHEN @Type = 5 THEN 'ReinsuaranceIndemnityPaidLoss'
END
SELECT @lStr = N'DECLARE @tblAmount TABLE(LegalEntity VARCHAR(10), Amount MONEY );INSERT INTO @tblAmount (LegalEntity, Amount)'+
'SELECT LegalEntity,SUM(CAST('+ @ColName +' as MONEY)) AS Amount FROM dbo.' + @TableName + ' t(NOLOCK)'+
'WHERE t.AdjustmentBatch_ID = ' + CAST(@AdjustmentBatch_ID AS VARCHAR(20)) + ' GROUP BY t.LegalEntity '
PRINT @lStr
EXEC SP_executeSql @lstr
,@parameters = N'@tblAmountOut(LegalEntity VARCHAR(10), Amount MONEY ) TABLE OUTPUT '
,@tblAmountOut = @tblAmount OUTPUT
-------Bhuvnesh----------
I work only to learn Sql Server...though my company pays me for getting their stuff done;-)