Try the solutions that can be found here: https://learn.microsoft.com/en-us/answers/questions/80464/. For example:
;
with Q4 as
(
select RowId, DueDate1, DueDate2, DueDate3, DueDate4, DueDate5
from #Temp where DueDate4 <> 0
union all
select RowId, DueDate1, DueDate2, DueDate3, DueDate5, 0
from #Temp where DueDate4 = 0
),
Q3 as
(
select RowId, DueDate1, DueDate2, DueDate3, DueDate4, DueDate5
from Q4 where DueDate3 <> 0
union all
select RowId, DueDate1, DueDate2, DueDate4, DueDate5, 0
from Q4 where DueDate3 = 0
),
Q2 as
(
select RowId, DueDate1, DueDate2, DueDate3, DueDate4, DueDate5
from Q3 where DueDate2 <> 0
union all
select RowId, DueDate1, DueDate3, DueDate4, DueDate5, 0
from Q3 where DueDate2 = 0
),
Q1 as
(
select RowId, DueDate1, DueDate2, DueDate3, DueDate4, DueDate5
from Q2 where DueDate1 <> 0
union all
select RowId, DueDate2, DueDate3, DueDate4, DueDate5, 0
from Q2 where DueDate1 = 0
)
select
RowId,
format(DueDate1, '#') DD1,
format(DueDate2, '#') DD2,
format(DueDate3, '#') DD3,
format(DueDate4, '#') DD4,
format(DueDate5, '#') DD5
from Q1
order by RowId