Я бы попытался это сделать, НЕУДАВИВ данных и используя ROW_Number , чтобы получить целое число для ColumnName, например,
DECLARE @t TABLE ( Column1 CHAR(1), Column2 CHAR(3))
INSERT INTO @t
(Column1,Column2)
VALUES
('A', 'AAA') ,('B', 'BBB') ,('C', 'CCC') ,('D', 'DDD')
SELECT
ColData = T.Column1
,ColName = 'Column1.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
UNION
SELECT
ColData = T.Column2
,ColName = 'Column2.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
, которое дает этот результат
ColData ColName
A Column1.1
AAA Column2.1
B Column1.2
BBB Column2.2
C Column1.3
CCC Column2.3
D Column1.4
DDD Column2.4
Итак, оберните это в запрос PIVOT, чтобы получить требуемый вывод
SELECT
[Column1.1],[Column2.1],[Column1.2],[Column2.2],[Column1.3],[Column2.3],[Column1.4],[Column2.4]
FROM(
SELECT
ColData = T.Column1
,ColName = 'Column1.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
UNION
SELECT
ColData = T.Column2
,ColName = 'Column2.' + CAST(ROW_NUMBER()OVER(ORDER BY (SELECT null)) AS NVARCHAR(5))
FROM @t T
)AS Tab
PIVOT
(
MAX(ColData)
FOR ColName IN ([Column1.1],[Column2.1],[Column1.2],[Column2.2],[Column1.3],[Column2.3],[Column1.4],[Column2.4])
) AS PIV;
Вывод
Column1.1 Column2.1 Column1.2 Column2.2 Column1.3 Column2.3 Column1.4 Column2.4
A AAA B BBB C CCC D DDD