2014-02-20 36 views
0

是否可以將1列的sql輸出格式化爲3列?轉換sql視圖輸出

例如,我的電流輸出爲:

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是的,非數字字段不能分割,必須在單獨的步驟中添加行號。查看更新的動物示例。 –