SQL 把查出来的结果,拼成一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 把查出来的结果,拼成一列相关的知识,希望对你有一定的参考价值。


Name
A
B
C
结果拼成:A,B,C
SQL要怎么写?

你没说是什么数据库,例如MySQL:
SELECT CONCAT(A, \',\', B, \',\', C) AS name FROM 表。
sql server可以直接:
SELECT A+\',\'+ B+\',\'+C AS name FROM 表。
参考技术A select name+',' from tablename for xml path('') 参考技术B SELECT wmsys.wm_concat(NAME) FROM TABLE;

Oracle一列的多行数据拼成一行显示

参考技术A Oracle 提供了两个函数wmsys.wm_concat 和 LISTAGG函数。

      wmsys.wm_concat是Oracle 10g推出的,用来连接字符串,wmsys.wm_concat()中的参数也可以使多个,使用”||”拼接,如下例子:select deptno,wmsys.wm_concat(ename || '-' || job) name from emp group by deptno;

        LISTAGG是Oracle 11g推出的,它的作用和wmsys.wm_concat是一样。基础语法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)。用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。非常方便。

        同样是聚合函数,还有一个高级用法:就是over(partition by XXX),也就是说,在你不使用Group by语句时候,也可以使用LISTAGG函数:

使用实例:

结果:

以上是关于SQL 把查出来的结果,拼成一列的主要内容,如果未能解决你的问题,请参考以下文章

用hibernate,数据库里的数据是date类型,对应的实体类中该字段也是Date类型,想要把查出来的结果转换为yy

SQL Server 行转列,列转行。多行转成一列

ibatis批处理和把批量数据拼成一条sql语句,哪个效能更好?

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

sql 如何将查出来的一列用逗号拼接

sql查询 表中一列不重复 显示多列