Är det detta du vill ha?
select coalesce(cast(id as varchar(255)), '')
from #v;
Du måste göra om hela resultatkolumnen till en enda kolumn. Om du vill ha ett tomt värde så är typen någon sorts teckensträng.
I dina exempel, else id
betyder att resultatet från case
är ett heltal, vilket är anledningen till att du får antingen 0
eller NULL
.