listagg()函数会将某列的查询结果通过分组的形式合并成一行,并且我们可以在各个结果集中定义自己想要的分隔符。
成都创新互联公司不能给您低的价格,只能给您高的品质!我们努力坚持得到越来越多的客户认可和追随,这正是我们继续前进的大动力!创新互联专业网络公司,为企业提供高端网站建设,营销型网站制作,外贸网站制作,做网站,网站改版等做网站服务,建网站费用1680元起,成都数百家企业建站公司的选择。
案例:
select * from test;
select id,listagg(name,',') within GROUP (order by name) from test group by id;
listagg()函数合并结果时,我们可以通过order by 设置它合并的先后顺序,通过 group by 来设置它合并的条件。有点类似于sum()或者count()的使用方法。
值得注意的是,这个函数的连接符只会出现在查询结果的中间,而且这个合并会根据分组条件无限叠加。因此,当我们需要将结果插入数据表的某一行时,请记得加上长度限制(通常我们使用substr()函数将太长的部分去掉),以免出现数据丢失等情况。
--1)按照你提供的表结构和最终需求似乎不需要 表1: company
--2)按照你的要求结果集中列的数量似乎不能确定,所以ORCLE不能完成这个查询,但是有一个
--wmsys.wm_concat函数可以完成类似功能,请参照下面SQL:
SELECT DISTINCT X.cid,X.uid,X.uname,wmsys.wm_concat(X.position) over (partition by X.uname) AS position
FROM (
SELECT company_user.cid,company_user.uid,user.uname, company_user.position
FROM user,company_user
WHERE user.uid = company_user.uid
AND company_user.cid=1
) X
------------预计执行结果-----------------------------------------------------
cid uid uname postion
1 1 U1 P1,P2,P3
2 2 U2 P1,P2
------------结果说明-----------------------------------------------------------
--结果集中postion字段的结果是所有company_user表中满足条件的集合,
--形成一个由逗号分割的字符串
希望能够对你有帮助.如果有问题可以追问
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、之后在该界面中,点击左上角“新建查询”选项。
3、接着在该界面中,输入将两个表合在一起的sql语句“select * from test1,test2;”。
4、然后在该界面中,点击工具栏里的“运行三角形”图标。
5、最后在该界面中,显示成功将两个表合在一起。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款