oracle数据库纵向转横向,复杂SQL语句实现表中数据横向变纵向问题求解

想要实现如下结果说明如下:

以id1,id2过滤前提,根据kind把数据进行处理,

当kind=1时,name2,age2置空

当kind=2时,name1,age1置空

说明:数据的id1,id2相同时(不是id1=id2,是id1=id1,id2=id2),kind=1的条数和kind=2的条数可能不一样多。

合并为kind=1或kind=2中的最大行数即可。

谢谢各位。

增加sql如下:

create table test (id1 number,id2 number, kind number,  name1 varchar2(10),age1 varchar2(10), name2 varchar2(10),age2 varchar2(10));

INSERT INTO TEST VALUES (1,    1,   1,        'a','10',NULL,NULL);

INSERT INTO TEST VALUES (1,    1,   2,        NULL,NULL,'d','20');

INSERT INTO TEST VALUES (1,    1,   1,        'e','30',NULL,NULL);

INSERT INTO TEST VALUES (1,    2,   1,        'g','40',NULL,NULL);

INSERT INTO TEST VALUES (1,    2,   2,        NULL,NULL,'j','50');

INSERT INTO TEST VALUES (1,    2,   2,        NULL,NULL,'m','60');

INSERT INTO TEST VALUES (1,    2,   3,        'n','70','p','80');--注意kind=3的也存在

期望值:

id1   id2   name1  age1   name2   age2

1      1       a           10       null         null --kind=1

1      1       e           30       null         null --kind=1

1      1       null        null       d         20    --kind=2

1      2       g           40       null         null --kind=1

1      2       null       null         j          50   --kind=2

1      2       null        null        m         60  --kind=2

期望值和原值是不完全一样的。

我对要求简单的描述一下:

原始数据每条数据都有一个区分(1/2/3),一般id1,id2相同时,应该有3条对应数据(区分=1/2/3),也可能缺少某个区分的数据。

当区分=1时,有n多类似name1的字段有对应数据

当区分=2时,有n多类似name2的字段有对应数据

当区分=3时,是id1,id2相同时,区分=1,区分=2的合计数据

我要出报表,所以要把id1,id2相同的为单位做小计,区分=1,区分=2的数据由原始的横向数据,变为纵向数据。

比如:区分=1的数据有5条,区分=2的数据有3条,那么横向8条变为纵向5条,区分=1,区分=2的数据在同一条数据上显示,同时补空。

区分=1的数据有2条,区分=2的数据有4条,那么横向6条变为纵向4条,区分=1,区分=2的数据在同一条数据上显示,同时补空。

不知道描述清楚没有。

欢迎并感谢高手解答!!!

[本帖最后由 tsingse 于 2009-9-16 10:35 编辑]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值