Without more information, It looks like the table design does not support well what you want to achieve. The best thing would be to normalize the design - instead of having 10 columns, to have 10 rows. If changing the table design is out of question for some reason, you can try something like this:
SELECT RecordID, ListField = (CASE WHEN Att1 = 1 THEN 'Att1' ELSE '' END ) + ',' +(CASE WHEN Att12= 1 THEN 'Att2' ELSE '' END ) + ','+ (CASE WEHN Att3=1 THEN 'Att3' ELSE '' END) + ','.......
Each CASE statement reads specific field, and if it holds 1 returns field name. If it holds zero, it returns empty string. Then all those CASE statements are concatenated and you get desired string. Field names are hard-codded, but you write the statement only once. If you add more fields, you will need to expand the statement.
Normalized design avoids updating statement. Instead of series of CASE -WHEN-THEN -ELSE -END statements a simple aggregate function would do the work. If you are interested, we can discuss that solution too.
I hope this helped.