我需要一个帮助,将第一列中的行号数据和第二列中的奇数行号数据相加。使用SQL Server 2008 / SQL server 2008 R2 ...
示例
id Data
1 TK104
2 ABC
3 TK106
4 XYZ
寻找输出
NAME VALUE
TK104 ABC
TK106 XYZ
答案 0 :(得分:1)
如果您的id
可以包含'空白'使用row_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
答案 1 :(得分:0)
我不完全确定你是指一张临时表,但如果你的意思是:
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
这样即使在第一列,第二列也是奇数。我们db之一的表中的一个例子:
(106 rows affected)
Column1 Column2
-------------------------------------------------- ------------------------
652
653
654
655
答案 2 :(得分:0)
根据您的示例,您似乎想要将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