0

例如

我有以下场景有人可以就这个当前场景提出建议吗

Col1 
-----
Test1
Test2
test3  
Test4
Test5
Test6
test7
Test8
Test9
Test10
test11
Test12

预期情景

Col1   Col2   Col3
-------------------
Test1  Test2  Test3         
Test4  Test5  Test6
test7  Test8  Test9
Test10 Test11 test12

... 继续

在此处输入图像描述

4

1 回答 1

0

你似乎想要这样的东西:

select max(case when seqnum % 3 = 0 then col end) as col1,
       max(case when seqnum % 3 = 1 then col end) as col2,
       max(case when seqnum % 3 = 2 then col end) as col3   
from (select t.*,
             row_number() over (order by col) - 1 as seqnum
      from t
     ) t
group by floor(seqnum / 3)
order by min(seqnum);

这添加了一个序列号,然后使用算术和group by减少行数。

于 2018-08-10T11:02:49.507 回答