[英]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.