Je to to, co chcete?
select coalesce(cast(id as varchar(255)), '')
from #v;
Musíte převést celý výsledný sloupec do jediného sloupce. Pokud chcete prázdnou hodnotu, pak je typem nějaký znakový řetězec.
Ve vašich příkladech else id znamená, že výsledek z case je celé číslo, proto dostáváte buď 0 nebo NULL .