想要实现如下结果说明如下:
以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 编辑]