Sql 一次获取两行数据并将数据放入两列?

Sql 一次获取两行数据并将数据放入两列?,sql,sql-server,tsql,Sql,Sql Server,Tsql,在本例中,什么SQL代码将输入表转换为输出表?假设有一些顺序,奇数行转到第2列,偶数行转到第3列,在同一输出行上有连续的奇偶对 input table: column1 A B C D E F output table: column2 column3 A B C D E F 更新: 假设有一些顺序,奇数行转到第2列,偶数行转到第3列,在同一输出行上有连续的奇偶对 ;WITH CTE AS (

在本例中,什么SQL代码将输入表转换为输出表?假设有一些顺序,奇数行转到第2列,偶数行转到第3列,在同一输出行上有连续的奇偶对

input table:
column1
  A
  B
  C
  D
  E
  F

output table:
column2    column3
  A          B
  C          D
  E          F
更新:
假设有一些顺序,奇数行转到第2列,偶数行转到第3列,在同一输出行上有连续的奇偶对

;WITH CTE AS (
  SELECT ROW_NUMBER() OVER (ORDER BY column1) AS rn, column1
  FROM #mytable
), CTE2 AS (
   SELECT *
   FROM CTE 
   WHERE rn % 2 <> 0
), CTE3 AS (
   SELECT *
   FROM CTE 
   WHERE rn % 2 = 0
)
SELECT c2.column1 AS column2, c3.column1 AS column3
FROM CTE2 AS c2
LEFT JOIN CTE3 AS c3 ON c2.rn = c3.rn - 1 
CTE2包含所有奇数行,而CTE3包含所有偶数行。我们通过c2.rn=c3.rn-1将连续奇偶对连接在一起,以获得所需的结果集


此方法可以轻松更改输出列的数量

WITH cte AS (
  SELECT
    column1
   ,output_row = (ROW_NUMBER() OVER(ORDER BY column1)-1) / 2 
   ,output_col = (ROW_NUMBER() OVER(ORDER BY column1)-1) % 2
  FROM input_table
)
SELECT
  column2 = [0]
 ,column3 = [1]
FROM cte
PIVOT(MAX(column1) FOR output_col IN ([0],[1])) p

完全不清楚在这些表中拆分数据的条件是什么。请详细说明。假设有订单,奇数行转到第2列,偶数行转到第3列,在同一输出行上有连续的奇偶对。@用户1744318我认为您应该将此注释放在问题中。这是我尝试使用的想法,但导致了否决票:这里是否使用联接过度?按column1更改顺序以满足您的需要。