You would need to dynamically build the SQL as a string then execute it. Something like this...
DECLARE @s_dt INT
DECLARE @query NVARCHAR(MAX)
SET @s_dt = (SELECT DATEPART(dd, s_dt) FROM TableName WHERE 1 = 1)
SET @query = 'SELECT s_dt'
+ ', NULL as dt' + RIGHT('0' + CAST(@s_dt as VARCHAR), 2)
+ ', NULL as dt' + RIGHT('0' + CAST((@s_dt + 1) as VARCHAR), 2)
+ ', NULL as dt' + RIGHT('0' + CAST((@s_dt + 2) as VARCHAR), 2)
+ ', NULL as dt' + RIGHT('0' + CAST((@s_dt + 3) as VARCHAR), 2)
+ ' FROM TableName WHERE 1 = 1)
EXECUTE(@query)
You will need to replace WHERE 1 = 1 in two places above to select your data, also change TableName to the name of your table and it currently puts NULL as the dynamic column data, you probably want something else there.
To explain what it is doing:
SET @s_dt is selecting the date value from your table and returning only the day part as an INT.
SET @query is dynamically building your SELECT statement based on the day part (@s_dt).
Each line is taking @s_dt, adding 0, 1, 2, 3 etc, casting as VARCHAR, adding '0' to the left (so that it is at least 2 chars in length) then taking the right two chars (the '0' and RIGHT operation just ensure anything under 10 have a leading '0').