免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3429 | 回复: 6
打印 上一主题 下一主题

急急急救急:求求informix下怎样实现多行合并的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-23 10:10 |只看该作者 |倒序浏览
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

论坛徽章:
0
2 [报告]
发表于 2008-06-23 17:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2008-06-23 19:48 |只看该作者
原帖由 xvm03 于 2008-6-23 10:10 发表
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');
...


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

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
4 [报告]
发表于 2008-06-23 22:29 |只看该作者
楼上的两位不要偷懒撒~~随便写个出来示例下~~

论坛徽章:
0
5 [报告]
发表于 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 该用户已被删除
6 [报告]
发表于 2008-06-25 18:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2008-06-26 02:22 |只看该作者
又一个喜欢批阅的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP