有两个表:A,B;
A:
F1 F2 F3 F4
1 TOM A1
2 MIKE B1
3 JIM C1
4 JENY D2
B:
F1 F2 F3
1 A
1 B
1 C
1 D
2 A
2 B
2 C
2 D
3 A
3 B
3 C
3 D
4 A
4 B
4 C
怎么能通过SQL语句查询出:
1~3 A,B,C,D
4 A,B,C
A:
F1 F2 F3 F4
1 TOM A1
2 MIKE B1
3 JIM C1
4 JENY D2
B:
F1 F2 F3
1 A
1 B
1 C
1 D
2 A
2 B
2 C
2 D
3 A
3 B
3 C
3 D
4 A
4 B
4 C
怎么能通过SQL语句查询出:
1~3 A,B,C,D
4 A,B,C
f2列的字符是否固定是a,b,c,d,如果不固定,其组合种类会有很多,需要对每个组合作统计,做起来会很复杂。
create or replace function get_String(
p_f1 in number
)
return varchar2
as
cursor ccc(v_f1 number) is select f2 from b where f1=v_f1 order by f2 asc;
uuu ccc%rowtype;
str2 varchar2(200);
begin
open ccc(p_f1);
loop
fetch ccc into uuu;
exit when ccc%notfound;
str2:=str2 || uuu.f2;
end loop;
return str2;
end;select case when min(f1)<max(f1) then min(f1) || '-' || max(f1) else to_char(max(f1)) end f1,f2
from
(
select distinct f1,get_String(f1) f2 from b
)
group by f2,rownum-f1
from
(
select distinct f1,get_String(f1) f2 from b order by f2
)
group by f2,rownum-f1
from
(
select distinct f1,get_String(f1) f2 from b order by f2
)
group by f2,rownum-f1 order by max(f1)