当前位置:  开发笔记 > 数据库 > 正文

将sql查询结果返回到垂直排序的单独列中

如何解决《将sql查询结果返回到垂直排序的单独列中》经验,为你挑选了1个好方法。

如何重写查询" 从tbl1中选择col1 ",以便将结果拆分为三列 - 每列垂直排序结果?

所以,如果我收到的数据是:

aaa
bbb
ccc
ddd
eee
fff
ggg

我需要查询将其返回为:

aaa  ddd  ggg
bbb  eee
ccc  fff

这可能吗?谢谢



1> Adam Robinso..:

实际上,这不应该在SQL中完成.除非aaa,ddd和ggg的配对有一些含义,否则这是客户端格式化,不应该在服务器上完成.

编辑:

为了智力锻炼的利益,这样的事情似乎有效.

select
    f1.data, f2.data, f3. data

from (select data, ROW_NUMBER() over (order by data) as row_num from your_table) f1

left join (select data, ROW_NUMBER() over (order by data) as row_num from your_table) f2 on f2.row_num = f1.row_num + (select CEILING(COUNT(1) / 3) + 1 from your_table)
left join (select data, ROW_NUMBER() over (order by data) as row_num from your_table) f3 on f3.row_num = f1.row_num + (select CEILING(COUNT(1) / 3) + 1 from your_table) * 2

where f1.row_num between 1 and FLOOR((select COUNT(1) from your_table) / 3) + 1

但是,我再次怀疑这是应该在客户端完成的事情,而不是在SQL中.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有