|
|
发表于 2007/11/8 20:50:48
|
显示全部楼层
请确认:
行 列A 列B 列C 列D 列E
1 A 1.1 a1 3.5 6
2 A 1.1 a2 2.6 1
3 A 2 a1 3.5 6
4 A 2 a2 2.6 1
5 A 3 a1 3.5 6
6 A 3 a2 2.6 1
"把列B不相同的加起来,最后变成这样的结果."
可以的组合是:
行: 1+3+5 , 2+4+6, 同时,一行不否只能用一次?
行: 1+4+6 , 2+3+5,
.......
如果:
行 列A 列B 列C 列D 列E
1 A 1.1 a1 3.5 6
2 A 5 a2 2.6 6
3 A 2 a1 3.5 6
4 A 2 a2 2.6 1
5 A 3 a1 3.5 6
6 A 3 a2 2.6 1
这样你要的结果是否为:
1+2+3+5, 4+6两行?
如果是这样,基本无解,除非用另一列把要相加的标识出来,如上面的列E. 把列E相等的B相加.否则一条SQL是涮不出来的,写P/L SQL吧.
declare
cursor cur_r
is
select min(rowid),列B
from T
where 列F <> 'Y' --标识已经使用过.
group by 列B;
v_count number;
begin
--Loop;
v_count := 0;
for c_r in cur_r loop
--把列加总输出,
--更新已经加况过的行.列F= 'Y';
--V_count 计数.
end loop;
--如果V_COUNT = 0退出
-- end loop
end; |
|