急急急救急:求求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 原帖由 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');
...
正确的解决办法是开发一个用户自定义的聚合函数。 楼上的两位不要偷懒撒~~随便写个出来示例下~~:mrgreen: :mrgreen: 闲着也是闲着 写了个
(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; 又一个喜欢批阅的
页:
[1]