我是靠谱客的博主 野性电脑,最近开发中收集的这篇文章主要介绍oracle中如何把表中具有相同值列的多行数据合并成一行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题具体描述如下

表A记录如下:

A 1

A 2

B 1

B 2

如何根据表A生成新表B:

A 1 2

B 1 2

如何用oracle sql语句将表A的记录生成表B?

(1)根据oracle的不同版本将有不同的做法,如果当前oracle版本支持wm_concat()

函数,那么可以使用以下oracle sql语句:

 

1

SELECT field1, wm_concat(field2) FROM YourTable GROUP BY field2;

wm_concat() 函数的功能跟MySQL中的group_concat()函数功能相似,这个函数可能在文档中找不到,因此需要在sqlplus中测试后才知道是否支持。

(2)另外的解决方法,如在oracle 10g及后续版本中可以使用以下sql:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

SELECT  *

FROM    (

        SELECT  *

        FROM    mytable

        MODEL

        PARTITION BY

                (grouper)

        DIMENSION BY

                (ROW_NUMBER() OVER (PARTITION BY grouper ORDER BY id) AS rn)

        MEASURES

                (val, val AS group_concat, 0 AS mark)

        RULES SEQUENTIAL ORDER (

                group_concat[rn > 1] ORDER BY rn = group_concat[CV() - 1] || ', ' || val[CV()],

                mark[ANY] ORDER BY rn = PRESENTV(mark[CV() + 1], 0, 1)

                )

        )

WHERE   mark = 1

ORDER BY

        grouper

最后

以上就是野性电脑为你收集整理的oracle中如何把表中具有相同值列的多行数据合并成一行的全部内容,希望文章能够帮你解决oracle中如何把表中具有相同值列的多行数据合并成一行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部