I have a SQL table like this
col1     col2      col3
1         0         1
1         1         1
0         1         1
1         0         0
0         0         0
I am expecting output as like this
col1     col2      col3     NewCol
1         0         1        SL,PL
1         1         1        SL,EL,PL
0         1         1        EL,PL
1         0         0        SL
0         0         0        NULL
The condition for this is if col1>0 then SL else ' ',  if col2>0 EL else ' ', if col3>0 PL else ' '
I tried to use Concatenate many rows into a single text string? but didn't able to achieve the desired result properly
I have tried It is working fine with a message
Invalid length parameter passed to the LEFT or SUBSTRING function.
WITH CTE AS (
   SELECT col1, col2, col3,
          CASE WHEN col1 > 0 THEN 'SL,' ELSE '' END +
          CASE WHEN col2 > 0 THEN 'EL,' ELSE '' END +
         CASE WHEN col3 > 0 THEN 'PL,' ELSE '' END AS NewCol
   FROM   Employee
)
SELECT col1, col2, col3,
       substring(NewCol, 1, len(NewCol) - 1) AS NewCol
FROM   CTE
But again my last condition is not matching if all columns is 0 then I have to show NULL as per desired output.
Find the attach fiddle http://sqlfiddle.com/#!6/2bd6a/1
 
     
     
     
    