将数据拆分为2列

时间:2016-01-13 06:15:02

标签: sql sql-server sql-server-2008

我有一列中的数据按升序排序。我想把它分成两列。检查我的表和预期输出。这背后的逻辑是我想要第一列中的第1行,第3行,第5行数据以及第2列中的第2行,第4行和第6行等等。

我现有的表:
表1:

Col1
2012
2013
2014
2015
2016
2017

预期输出:

Col1    Col2
2012    2013
2014    2015
2016    2017

任何有任何建议的人如何实现这一点。

1 个答案:

答案 0 :(得分:3)

我认为你可以使用这样的查询:

SELECT 
    Max(Col1) Col1, Max(Col2) Col2
FROM (
    SELECT 
        (ROW_NUMBER() OVER (ORDER BY Col1)- 1) / 2 as seq,
        CASE WHEN ROW_NUMBER() OVER (ORDER BY Col1) % 2 = 1 THEN Col1 END Col1, 
        CASE WHEN ROW_NUMBER() OVER (ORDER BY Col1) % 2 = 0 THEN Col1 END Col2
    FROM yourTable) t
GROUP BY seq