A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
I think that you can also consider UNPIVOT:
select Column1, Column2
from (
select
T1.ColumnA as [Column A],
T2.ColumnB as [Column B],
T1.ColumnC as [Column C]
from Test1 T1
join Test2 T2 on T1.Test1ID = T2.Test2ID
where T1.Test1ID = X
) t
unpivot
(
Column2 for Column1 in ([Column A], [Column B], [Column C])
) u