Oracle如何取出某一列的所有不重复值作为单独一列
字段1字段2a1a1a2b1b2b3效果a1,2b1,2,3类似纵表变横表,求高手指导,想了很久没想出来...
字段1 字段2
a 1
a 1
a 2
b 1
b 2
b 3
效果
a 1,2
b 1,2,3
类似纵表变横表,求高手指导,想了很久没想出来 展开
a 1
a 1
a 2
b 1
b 2
b 3
效果
a 1,2
b 1,2,3
类似纵表变横表,求高手指导,想了很久没想出来 展开
4个回答
2014-12-03 · 知道合伙人软件行家
关注
展开全部
这个是oracle的行变列转换 可以使用一个函数 sys_connect_by_path(column,<分隔符>)
如
SELECT c.gysid, listagg(c.wzlbid,',') within GROUP (ORDER BY c.wzlbid) FROM wzgl_gys_zrwmfw c GROUP BY gysid
这几个方法都可以实现行转列,达到想要的效果。
但当数据量比较大时却报ORA-01489:字符串连接的结果过长。
此时个人的解决办法,只能转到程序代码中去处理。
希望,以此为鉴!
如
SELECT c.gysid, listagg(c.wzlbid,',') within GROUP (ORDER BY c.wzlbid) FROM wzgl_gys_zrwmfw c GROUP BY gysid
这几个方法都可以实现行转列,达到想要的效果。
但当数据量比较大时却报ORA-01489:字符串连接的结果过长。
此时个人的解决办法,只能转到程序代码中去处理。
希望,以此为鉴!
展开全部
用wmsys.wm_concat这个函数,如果你的库中没有这个函数,参照一个这个网站自己创建一下
http://bbs.csdn.net/topics/360036492?page=1
http://bbs.csdn.net/topics/360036492?page=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2018-05-15
展开全部
select a, wmsys.wm_concat(b) from atest t group by a
结果:
a 1,2,1
b 1,3,2
select a, wmsys.wm_concat(b)
from (select distinct a, b from atest) t
group by a
结果:
a 2,1
b 3,2,1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Select distinct column_name from table_name
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询