簡體   English   中英

SQL服務器中如何將一列分成兩列偶數行

[英]How to divide one column into two even row columns in SQL Server

我有一個查詢,它在一列中返回第 n 行。 我想將行分成兩半並將它們放在另一列中。

物品
A1
A2
A1
A3
A4
A5
A6
A7
A8
A9
A10
A11

轉換成

第 1 欄 第 2 欄
A1 A2
A3 A4
A5 A6
A7 A8
A9 A10
A11

你可以這樣做:

SELECT a.col1, b.col1 
FROM (select col1,row_number() over(order by col1) rownum from Test) a
LEFT JOIN (Select col1, lag(col1) over(order by col1) previous from test) b
ON a.col1 = b.previous 
WHERE rownum%2=1

正在測試表和 col1 列,這基本上是選擇奇數行並將它們與下一行連接起來。

您似乎還想刪除重復項。 因此,我建議使用dense_rank()進行聚合:

select max(case when seqnum % 2 = 1 then col1 end),
       max(case when seqnum % 2 = 0 then col1 end)       
from (select col1,
             dense_rank() over (order by col1) as seqnum
      from test
     ) t
group by ceiling(seqnum / 2.0);

注意:這假定排序基於col1值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM