Hi @kasim mohamed ,
You have to create a dynamic query, something like this:
DECLARE @Columns_paid as VARCHAR(MAX)
DECLARE @Columns_code as VARCHAR(MAX)
DECLARE @SQL as VARCHAR(MAX)
SELECT @Columns_paid = COALESCE(@Columns_paid + ' + ','') + 'ISNULL('+ QUOTENAME(Name) + ',0)'
FROM
(SELECT DISTINCT name
FROM tempdb.sys.columns
WHERE object_id = Object_id('tempdb..##temp')
AND name like 'paid%'
) AS B
ORDER BY B.Name
SELECT @Columns_code = COALESCE(@Columns_code + ' , ','') + QUOTENAME(Name)
FROM
(SELECT DISTINCT name
FROM tempdb.sys.columns
WHERE object_id = Object_id('tempdb..##temp')
AND name like 'code%'
) AS B
ORDER BY B.Name DESC
SET @SQL = 'SELECT id,
Total,
TotalPaid,
Total - TotalPaid as UnPaid,
LastCode
FROM ( SELECT id,
Total,
'+@Columns_paid+' as TotalPaid,
COALESCE(' + @Columns_code + ') as LastCode
FROM ##temp
) x'
EXEC(@SQL);
It will now show the value of the last code column. If you want to show the column name than the query should be changed.
Kind regards,
Wilko
Please do not forget to "Accept the answer” wherever the information provided helps you, this can be beneficial to other community members. If you have extra questions about this answer, please click "Comment".