查看: 2574|回复: 18

[SQL] 这个SELECT 怎么实现

[复制链接]
论坛徽章:
1
跳转到指定楼层
1#
发表于 2015-12-24 17:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiaping0424 于 2015-12-24 17:37 编辑

如何让这个语句不实现排序:
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from dual union all  
  SELECT 'Beijing 3' city from dual union all  
  SELECT 'New York 4' city from dual union all  
  SELECT 'Bostom 5' city from dual union all  
  SELECT 'Tokyo 6' city from dual   
)  
SELECT listagg(city,' ')   within GROUP (ORDER BY city)  
from temp ;


我想通过一个SELECT实现把多行变成一行,根据行从上到下拼接成一行(不使用ROWNUM),不排序,如何实现,求高手指点?
论坛徽章:
10
射手座
日期:2015-11-23 14:22:242016猴年福章
日期:2016-02-18 09:31:30秀才
日期:2016-02-18 09:24:30双子座
日期:2016-01-27 10:10:49天枰座
日期:2016-01-13 16:00:59天枰座
日期:2016-01-13 15:48:12秀才
日期:2016-01-06 14:01:09天蝎座
日期:2015-11-25 16:11:14白羊座
日期:2015-11-24 10:35:21技术图书徽章
日期:2017-09-18 11:45:07
2#
发表于 2015-12-24 17:57 | 只看该作者
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from dual union all  
  SELECT 'Beijing 3' city from dual union all  
  SELECT 'New York 4' city from dual union all  
  SELECT 'Bostom 5' city from dual union all  
  SELECT 'Tokyo 6' city from dual   
)  
SELECT to_char(wm_concat(city))
from temp;

使用道具 举报

回复
论坛徽章:
1
3#
 楼主| 发表于 2015-12-24 17:59 | 只看该作者
隐剑埋名 发表于 2015-12-24 17:57
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from  ...

wm_concat 此函数在12C中没有

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
4#
发表于 2015-12-24 19:06 | 只看该作者
order by null

使用道具 举报

回复
论坛徽章:
6
2010广州亚运会纪念徽章:板球
日期:2010-11-15 11:29:572010广州亚运会纪念徽章:足球
日期:2010-11-15 11:30:022013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-20 06:00:12沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
5#
发表于 2015-12-24 19:56 | 只看该作者
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from dual union all  
  SELECT 'Beijing 3' city from dual union all  
  SELECT 'New York 4' city from dual union all  
  SELECT 'Bostom 5' city from dual union all  
  SELECT 'Tokyo 6' city from dual   
)  
SELECT listagg(city,' ')   within GROUP (ORDER BY regexp_substr(city, '[0-9]+',1, 1))  
from temp ;

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
6#
发表于 2015-12-24 20:11 | 只看该作者
abstractcyj 发表于 2015-12-24 19:56
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from  ...

还要to_number

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
7#
发表于 2015-12-24 20:13 | 只看该作者
本帖最后由 〇〇 于 2015-12-24 20:13 编辑

测试了,order by null是不行的,参考5+6楼

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
8#
发表于 2015-12-24 20:13 | 只看该作者
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from dual union all  
  SELECT 'Beijing 3' city from dual union all  
  SELECT 'New York 4' city from dual union all  
  SELECT 'Bostom 5' city from dual union all  
  SELECT 'Tokyo 6' city from dual   
)  
SELECT listagg(city,' ')   within GROUP (ORDER BY substr(city,-1,1))  
from temp ;

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
9#
发表于 2015-12-24 20:14 | 只看该作者
solomon_007 发表于 2015-12-24 20:13
with temp as(  
  SELECT 'Guangzhou 1' city from dual union all  
  SELECT 'Shanghai 2' city from  ...

也不能处理〉10

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
10#
发表于 2015-12-24 21:51 | 只看该作者
   那不用rownum,允许用 row_number也行啊,把temp加一层就是啦

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表