Sql 如何将偶数行号数据添加到第一列,将奇数行号数据添加到第二列?
我需要帮助将偶数行号数据添加到第一列,将奇数行号数据添加到第二列。正在使用SQL server 2008/SQL server 2008 R2 示例Sql 如何将偶数行号数据添加到第一列,将奇数行号数据添加到第二列?,sql,sql-server,Sql,Sql Server,我需要帮助将偶数行号数据添加到第一列,将奇数行号数据添加到第二列。正在使用SQL server 2008/SQL server 2008 R2 示例 id Data 1 TK104 2 ABC 3 TK106 4 XYZ 寻找像这样的输出 NAME VALUE TK104 ABC TK106 XYZ 我不完全确定您是否指的是临时表,但如果您的意思是: CREATE TABLE #
id Data
1 TK104
2 ABC
3 TK106
4 XYZ
寻找像这样的输出
NAME VALUE
TK104 ABC
TK106 XYZ
我不完全确定您是否指的是临时表,但如果您的意思是:
CREATE TABLE #ReturnData (Column1 VARCHAR(50), Column2 VARCHAR(50))
INSERT INTO #ReturnData (Column1, Column2) (
SELECT
CASE WHEN MyTable.ID % 2 = 0 THEN CONVERT(VARCHAR, whateverdata) ELSE '' END,
CASE WHEN MyTable.ID % 2 > 0 THEN CONVERT(VARCHAR, whateverdata) ELSE '' END
FROM MyTable
)
SELECT * FROM #ReturnData
DROP TABLE #ReturnData
这将在第一列中显示偶数,在第二列中显示奇数。我们的一个数据库中的表格示例:
(106 rows affected)
Column1 Column2
-------------------------------------------------- ------------------------
652
653
654
655
根据您的示例,看起来您希望将id=i的记录与id=i+1的记录连接起来。如果是,则应根据以下条件自联接表:
SELECT A.Data NAME, B.Data VALUE
FROM Example A FULL JOIN Example B -- Self-join. Using a FULL join in case of gaps
ON A.id + 1 = B.id
AND B.id % 2 = 1 --Make sure that Value is odd
AND A.id % 2 = 0 --Name is even
如果您的
id
可以包含“间隙”,请使用row\u number()
和条件聚合
select
max(case when rn % 2 = 0 then data end) as name,
max(case when rn % 2 = 1 then data end) as value
from
(
select *,
row_number() over (order by id) as rn
from your_table
)
group by rn / 2
没有间隙,总是偶数行吗?进行自联接。
。。。和B.id%2=1(以保持完全的外部连接。)@jarlh评论的问题已得到修复。