I have the following variable to generate dynamic string.
Example:
If the variable contains two values:
DECLARE @Dynamic_Variables varchar(max) = 'One,Two'
DECLARE @SQL varchar(max)
SET @SQL = '( CASE WHEN [One] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Two] > 0 THEN 1 ELSE 0 END ) AS [Total]'
PRINT(@SQL)
The string should be like this:
( CASE WHEN [One] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Two] > 0 THEN 1 ELSE 0 END ) AS [Total]
If the string contains three values:
DECLARE @Dynamic_Variables varchar(max) = 'One,Two,Three'
DECLARE @SQL varchar(max)
SET @SQL = '( CASE WHEN [One] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Two] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Three] > 0 THEN 1 ELSE 0 END ) AS [Total]'
PRINT(@SQL)
The string should be like this:
( CASE WHEN [One] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Two] > 0 THEN 1 ELSE 0 END ) + ( CASE WHEN [Three] > 0 THEN 1 ELSE 0 END ) AS [Total]