SQL 列转行的实现

简介: --列转行,逗号拼接指定列的值SQL Server中写法:SELECT STUFF(( SELECT  ',' + Field1 from TableA FOR XML PATH('')), 1, 1, '')Oracle中写法:方法一:wmsys.

--列转行,逗号拼接指定列的值

SQL Server中写法:
SELECT STUFF(( SELECT  ',' + Field1 from TableA FOR XML PATH('')), 1, 1, '')


Oracle中写法:

方法一:wmsys.wm_concat
select wmsys.wm_concat(Field1) from TableA

方法二:LISTAGG()

2.1、LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)

用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来

 1 with temp as(
 2   select 'China' nation,'Beijing' city from dual union
 3   select 'China' nation,'Shanghai' city from dual union
 4   select 'China' nation,'Guangzhou' city from dual union
 5   select 'USA' nation,'New York' city from dual union
 6   select 'USA' nation,'Bostom' city from dual
 7 )
 8 select nation,listagg(city,',') within group(order by city)
 9 from temp
10 group by nation;

2.2、over(partition by XXX)

在不使用Group by语句时候,使用LISTAGG函数(当作SUM()函数来使用)

1 with temp as(
2   select 'China' nation,'Beijing' city from dual union
3   select 'China' nation,'Shanghai' city from dual union
4   select 'China' nation,'Guangzhou' city from dual union
5   select 'USA' nation,'New York' city from dual union
6   select 'USA' nation,'Bostom' city from dual
7 )
8 select nation,city,listagg(city,',') within group(order by city) over(partition by nation) rank
9 from temp;

 

 

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

目录
相关文章
|
SQL XML Oracle
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
562 0
Mybatis动态SQL语句查询,实现一个参数 可查询多个字段。
|
4月前
|
SQL JSON 分布式计算
ODPS SQL ——列转行、行转列这回让我玩明白了!
本文详细介绍了在MaxCompute中如何使用TRANS_ARRAY和LATERAL VIEW EXPLODE函数来实现列转行的功能。
|
6月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day33】行转列,列转行
每天一道大厂SQL题【Day33】行转列,列转行
57 0
每天一道大厂SQL题【Day33】行转列,列转行
|
8月前
|
SQL 关系型数据库 MySQL
SQL脚本列转行
【5月更文挑战第2天】
55 0
|
XML SQL Java
Mybatis-Plus中实现使用xml文件来写复杂sql
Mybatis-Plus中实现使用xml文件来写复杂sql
2077 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
本篇文章讲解的主要内容是:***目前Oracle支持的行列互换有两种方式:case when、pivot\unpivot,我将通过几个案例来给大家详解如何通过这两种方式实现“行转列”,“列转行”的需求,并通过执行计划看case when、pivot\unpivot二者的底层逻辑关系以及效率上的影响。***
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
|
SQL Java 数据库连接
Mybatis中sql拦截增强-AOP+interceptor实现分页和排序
基于interceptor可以实现sql的完整打印,除了实现打印之外。其实还可以实现分页和排序,下面的分页和排序基于aop+mybatis的interceptor实现。其本质还是对mappedStament的boundSql进行增强。 下面的项目来源于github,通过这个我们可以很好的学习mybatis中插件interceptor的使用。
885 0
Mybatis中sql拦截增强-AOP+interceptor实现分页和排序
|
SQL 前端开发 关系型数据库
mysql实现一次将多条不同sql查询结果并封装到一个结果集
最近遇到一个统计查询需求,要求一次性查询多个统计信息,其中两个查询信息不在一个表中,也没有业务关联,表中也没有做连接处理。不考虑产品设计是否合理,完全是实际需求如此,需要一次性查询出来返回给前端进行展示,对于这种“非常规”的统计查询平常肯定会遇见,感觉有点代表性,所以简单记录一下。希望对有相同需求的同学可以作为参考。
mysql实现一次将多条不同sql查询结果并封装到一个结果集
|
SQL 存储 druid
MyCat - 架构剖析 - 核心技术之 SQL 路由实现 | 学习笔记
快速学习 MyCat - 架构剖析 - 核心技术之 SQL 路由实现
MyCat - 架构剖析 - 核心技术之 SQL 路由实现 | 学习笔记
|
SQL 大数据 UED
电商项目之支付类指标统计表 SQL 实现|学习笔记
快速学习电商项目之支付类指标统计表 SQL 实现
电商项目之支付类指标统计表 SQL 实现|学习笔记