Следующий запрос должен делать то, что вы хотите:
CREATE TABLE #temp (ID INT, ColA INT, ColB INT, ColC INT, ColD INT)
INSERT INTO #temp VALUES
(10, 0, 4, 6, 9),
(11, 0, 3, 3, 8)
DECLARE @Col VARCHAR(100) = '';
SELECT @Col += ',' + [Col] FROM #temp
UNPIVOT (
Val for Col In ([ColA],[ColB],[ColC],[ColD]))unpiv
GROUP BY Col
HAVING SUM(Val) > 0;
SET @Col = STUFF(@Col,1,1,'');
EXEC ('SELECT [ID],'+@Col+' FROM #temp');
Результат, как показано ниже,
ID ColB ColC ColD
10 4 6 9
11 3 3 8