成都网站建设设计

将想法与焦点和您一起共享

oracle+如何合并行,sql多行合并成一行 oracle

{ORACLE}请教大家怎么把多行合并成一行??

这样吗?

创新互联主要从事网站设计、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务固阳,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

select t1.push_code,t.1provincepudate,p1.provincereceivername,t2.citypudate,t2.cityreceivername

from t1,t2

where t.push_code= t2.push_code

在Oracle中,如何将多行数据合并成一行数据,如下:

如果这两行有个共同的其他列作为分组,标志他们是同一组、比如姓名编号之类的,是可以group by后min出来的。

select 姓名,min(引流管) as 引流管,min(化疗) as 化疗, min(放疗) as 放疗

from 记录表

group by 姓名

;

oracle中多行合并,如何用sql实现?

SQL select * from vb;

ID NM1 NM2

---------- ------------------------------ ------------------------------

1 a ccb

1 df dgdf

1 ewr saldfj

SQL select id,replace(name,',',' ') name from (select id,wm_concat(name) name from (select id,nm1||' '||nm2 name from vb) group by id);

ID NAME

---------- ------------------------------

1 a ccb ewr saldfj df dgdf

oracle 单列多行合并。

根据你的描述,做的以下测试:

-- 建表

CREATE TABLE kongxianji (a varchar2(20),b varchar2(20));

-- 插入数据

INSERT INTO kongxianji(a,b)VALUES('a',1);

INSERT INTO kongxianji(a,b)VALUES('b',2);

INSERT INTO kongxianji(a,b)VALUES('c',3);

INSERT INTO kongxianji(a,b)VALUES('d',4);

INSERT INTO kongxianji(a,b)VALUES('e',5);

INSERT INTO kongxianji(a,b)VALUES('f',6);

INSERT INTO kongxianji(a,b)VALUES('g',7);

COMMIT;

-- 写语句块,并执行

DECLARE

v_a varchar2(20);

v_b varchar2(50);

CURSOR r_aa IS SELECT a.a FROM kongxianji a WHERE a.b IN (2,3,6,7);

BEGIN

OPEN r_aa;

LOOP

FETCH r_aa INTO v_a;

EXIT WHEN r_aa%NOTFOUND;

v_b:= v_b||v_a;

END LOOP;

CLOSE r_aa;

dbms_output.put_line(v_b);

END;

说明:只通过一条sql语句是无法得到最终结果的,必须通过循环得到。

oracle 两行数据合并为一行数据

合并可以做到,不过如果不是单一的一条记录,那不就变成笛卡尔积了?

比如有两行不同姓名的行,再有两行不同姓名1的行。

那么你得到的结果就是4行(也就是笛卡尔积),而且内容全不完全都不同,这个结果应该不是你要的吧。

比如前面的两行内容为a a a;b b b(一个字母表示一个字段,这是两行内容)

后面两行的内容为c c c;d d d(一个字母表示一个字段,这是两行内容)

那么你得到的结果就是 a a a c c c;a a a d d d;b b b c c c;b b b d d d

这个四行的结果是你要的么?

求助,oracle多行数据合并成一行

我现在身边没有 数据库环境 这个是我以前写的SQL

你看一下,修改一下就可以了

Oracle分组查询用逗号分隔结果SQL语句

表一:

学号 姓名

1 张三

2 李四

3 王五

。。。。

表二:

学号 选修课程

1 语文

1 数学

2 英语

2 语文

3 数学

3 英语

3 历史

。。。。。

要求查处结果

学好 姓名 选修课程所有课程名称以,隔开

1 张三 语文,数学

2 李四 英语,语文

3 王五 数学,英语,历史

;

create table a_lyh_test

as

select 1 as "学号" , '张三' as "姓名" from dual

union all

select 2 as "学号" , '李四' as "姓名" from dual

union all

select 3 as "学号" , '王五' as "姓名" from dual

;

create table b_lyh_test

as

select 1 as "学号" , '语文' as "选修课程" from dual

union all

select 1 as "学号" , '数学' as "选修课程" from dual

union all

select 2 as "学号" , '英语' as "选修课程" from dual

union all

select 2 as "学号" , '语文' as "选修课程" from dual

union all

select 3 as "学号" , '数学' as "选修课程" from dual

union all

select 3 as "学号" , '英语' as "选修课程" from dual

union all

select 3 as "学号" , '历史' as "选修课程" from dual

;

select f."学号"

,f."姓名"

,ltrim(max(sys_connect_by_path(f."选修课程",','))

keep (dense_rank last order by f.pnum),',') as "选修课程"

from

(

select t."学号"

,t."姓名"

,t."选修课程"

,row_number() over(partition by t."学号" order by t."姓名") as pnum

,row_number() over(partition by t."学号" order by t."姓名")-1 as lnum

from

(

select a."学号",a."姓名",b."选修课程"

from a_lyh_test a

,b_lyh_test b

where a."学号" = b."学号"

) t

) f

group by f."学号",f."姓名"

connect by f.lnum = prior f.pnum and f."学号" = prior f."学号"

start with f.pnum = 1;


分享名称:oracle+如何合并行,sql多行合并成一行 oracle
URL分享:http://chengdu.cdxwcx.cn/article/dsigcgs.html