用于连接 Oracle 中多行的列值的 SQL 查询

SQL Query to concatenate column values from multiple rows in Oracle(用于连接 Oracle 中多行的列值的 SQL 查询)
本文介绍了用于连接 Oracle 中多行的列值的 SQL 查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以构造 SQL 来连接来自多行?

下面是一个例子:

表 A

<上一页>PID一个乙C

表 B

<上一页>PID 序列描述A 1 有一个 2 一个不错3天.B 1 干得好.C 1 是C 2 我们可以C 3 做C 4 这个工作!

SQL 的输出应该是 -

<上一页>PID 描述A祝你有美好的一天.B 干得好.C 是的,我们可以做这项工作!

所以基本上输出表的 Desc 列是表 B 中 SEQ 值的串联?

对 SQL 有帮助吗?

解决方案

有几种方法取决于您拥有的版本 - 请参阅 关于字符串聚合技术的 Oracle 文档.一个非常常见的方法是使用 LISTAGG:

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS 描述从 B 组按 pid;

然后加入 A 以挑选出你想要的 pids.

注意:开箱即用,LISTAGG 仅适用于 VARCHAR2 列.

Would it be possible to construct SQL to concatenate column values from multiple rows?

The following is an example:

Table A

PID
A
B
C

Table B

PID   SEQ    Desc

A     1      Have
A     2      a nice
A     3      day.
B     1      Nice Work.
C     1      Yes
C     2      we can 
C     3      do 
C     4      this work!

Output of the SQL should be -

PID   Desc
A     Have a nice day.
B     Nice Work.
C     Yes we can do this work!

So basically the Desc column for out put table is a concatenation of the SEQ values from Table B?

Any help with the SQL?

解决方案

There are a few ways depending on what version you have - see the oracle documentation on string aggregation techniques. A very common one is to use LISTAGG:

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B GROUP BY pid;

Then join to A to pick out the pids you want.

Note: Out of the box, LISTAGG only works correctly with VARCHAR2 columns.

这篇关于用于连接 Oracle 中多行的列值的 SQL 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)