SQL Server - Dynamic solution for filtering data based on column values - zero or non zero values

I have roughly 100 column in following format in SQL resultset.

ID DeptID Column1 Column2 Column3 Columns4 Column5  ------ Columnn
1   1       2      2.5545    0         0    0.2324          2
2   1       45     1.232423  0         0    0.1254          3
3   1       1      0         0         0    0.2             23
4   1       7      0         0         0    0.45            21
5   1       0      0         0         0    0.005           43

I would like to have a result set which includes only ID, DeptID and list of columns where columns have non zero values like Column1, cloumn2, column5 and so on plus total number of rows shall be 5. All columns with 0 values should be excluded (e.g. Column3 and Column4).

I have tried with 20 columns and it works but same solution for 100 columns is not feasible. so I am looking for solution dynamic in nature.

Output can look-like this.

ID DeptID Column1 Column2 Column5   ------ Columnn
1   1       2      2.5545    0.2324          2
2   1       45     1.232423  0.1254          3
3   1       1      0         0.2             23
4   1       7      0         0.45            21
5   1       0      0         0.005           43