当前位置:   article > 正文

用sql实现两行记录合并为一行记录_sql 查询数据将第二行的数据拼接到第一行后面

sql 查询数据将第二行的数据拼接到第一行后面

偶然遇到同学问了个sql的问题,闲着没事捣鼓了一下。

他的问题是:如何把下面这样的数据,每两行数据按照第一个字段合并为一行。

create table tp_user(
user_no  varchar2(2char),
user_name varchar2(10 char)
)

user_no        user_name

01                     a
01                     b
02                     a
02                     b

合并的效果:01       a;b

                        02       a;b

 

我用toda大概写了一个能实现的,应该还有很大优化空间,以后有空再看。

SELECTA.USER_NO,A.USER_NAME || ';' || B.USER_NAME

  FROM(SELECT USER_NO, USER_NAME

          FROM(SELECT ROW_NUMBER ()

                          OVER(PARTITIONBY(USER_NO)ORDERBY USER_NO)

                          I,

                       USER_NO,

                       USER_NAME

                  FROM TP_USER)

         WHERE I =1)A,

       (SELECT USER_NO, USER_NAME

          FROM(SELECT ROW_NUMBER ()

                          OVER(PARTITIONBY(USER_NO)ORDERBY USER_NO)

                          I,

                       USER_NO,

                       USER_NAME

                  FROM TP_USER)

         WHERE I =2) B

 WHEREA.USER_NO = B.USER_NO;

运行结果如图:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/766526
推荐阅读
相关标签
  

闽ICP备14008679号