xvm03 发表于 2008-06-23 10:10

急急急救急:求求informix下怎样实现多行合并的问题?

create table T(a int, b nvarchar(10), c char(5));

insert into T values(1,'A','我');
insert into T values(1,'A','我1');
insert into T values(2,'B','你0');
insert into T values(2,'B','你1');
insert into T values(2,'B','你2');
insert into T values(2,'B','你3');
insert into T values(3,'C','他7');
insert into T values(3,'C','他4');
insert into T values(3,'C','他5');
insert into T values(3,'C','他6');
合并如下结果:
1,A,我我1
2,B,你0你1你2你3
3,C,他4他5他6他7

czw1413_cn 发表于 2008-06-23 17:31

ivhb 发表于 2008-06-23 19:48

原帖由 xvm03 于 2008-6-23 10:10 发表 http://bbs.chinaunix.net/images/common/back.gif
create table T(a int, b nvarchar(10), c char(5));

insert into T values(1,'A','我');
insert into T values(1,'A','我1');
insert into T values(2,'B','你0');
insert into T values(2,'B','你1');
...

正确的解决办法是开发一个用户自定义的聚合函数。

liaosnet 发表于 2008-06-23 22:29

楼上的两位不要偷懒撒~~随便写个出来示例下~~:mrgreen: :mrgreen:

wenlq 发表于 2008-06-24 08:10

闲着也是闲着 写了个
(expression) (expression) (expression)

         1 A            我我1
         2 B            你0你1你2你3
         3 C            他4他5他6他7

--drop procedure jt;
create procedure jt( ) returning int,char(10),char(50);

        define va like t.a;
        define vb like t.b;
        define vc like t.c;

        define ta like t.a;
        define tb like t.b;

        define first int;
        define tc varchar(255);

        let first=1;
        let tc="";
        foreach select * into va,vb,vc from t
        order by 1,2,3
       if ( first == 1) then
                let ta=va;
                let tb=vb;
                let first = 0;
       end if
       if ( ta!=va or tb!=vb )
       then
                return ta,tb,tc with resume;
                let tc= "";
                let ta=va;
                let tb=vb;
       end if
       let tc=trim(tc)||vc;
        end foreach;
        return ta,tb,tc ;
end procedure;

flance 发表于 2008-06-25 18:31

ivhb 发表于 2008-06-26 02:22

又一个喜欢批阅的
页: [1]
查看完整版本: 急急急救急:求求informix下怎样实现多行合并的问题?