2014-02-20 3 views
0

Можно ли форматировать вывод sql из 1 столбца в 3 столбца?transform sql view output

Для примера. Мой выходной ток:

Column1 
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 

вот как я хочу выход быть:

Column1 Column2 Column3 
    1  2  3 
    4  5  6 
    7  8  9 
+1

какую логику вы используете, чтобы поместить определенное значение в определенный столбец ??? –

+0

@ M.Ali Row2 пойдет в Column2, Row1 и Row3 перейдут в Column3, Row1 и т. Д. – user793468

ответ

1

Вы можете сделать это с помощью модуля разделения и ROW_NUMBER() функции:

;WITH cte AS (SELECT *,ROW_NUMBER() OVER(ORDER BY Column1) RN 
       FROM Table1) 
    ,cte2 AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY RN%3 ORDER BY Column1) RN2       
       FROM cte) 
SELECT MAX(CASE WHEN RN%3 = 1 THEN column1 END) Col1 
     ,MAX(CASE WHEN RN%3 = 2 THEN column1 END) Col2 
     ,MAX(CASE WHEN RN%3 = 0 THEN column1 END) Col3 
     ,RN2 
FROM cte2 
GROUP BY RN2 

Пример: SQL Fiddle

+0

Ценности в моем вопросе выше (с 1 по 9) - это просто примеры. Я понятия не имею, какие будут ценности. Это может быть хотя бы z, или это могут быть альфа-числовые значения. – user793468

+0

Я получаю эту ошибку: Msg 245, Level 16, State 1, Line 1 Ошибка преобразования при преобразовании значения varchar 'JRD1123' в тип данных int. – user793468

+0

@ user793468 Да, нечисловое поле не может быть разделено, ему пришлось добавить номер строки на отдельном шаге. См. Обновленный пример с животными. –