这个SQL语句怎么写,在线等待,谢谢了!
A表:
userid funcid
a 01
a 02
B表:
funcid funcname
01 add
02 del
03 update
要求结果:
userid 'flag' funcid funcname
a true 01 add
a true 02 del
a false 03 update
[256 byte] By [
lmh79-阿楚] at [2007-12-16]
---如果a是已知的.
11:06:03 jlanzpa817>select distinct nvl(aa.userid,'a'),decode(aa.userid,'','false','true') flag,
11:06:38 2 bb.funcid,bb.funcname from aa,bb
11:06:38 3 where aa.funcid(+) = bb.funcid ;
NVL(AA.USE FLAG FUNCID FUNCNAME
---------- ----- ---------- ----------
a true 01 add
a true 02 del
a false 03 update
SQL> create table a (userid varchar2(2),funcid varchar2(2));
Table created.
SQL> create table b (funcid varchar2(2),funcname varchar2(10));
Table created.
SQL> insert into a values ('a','01');
1 row created.
SQL> insert into a values ('a','02');
1 row created.
SQL> insert into b values ('01','add');
1 row created.
SQL> insert into b values ('02','del');
1 row created.
SQL> insert into b values ('03','update');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from a;
US FU
-- --
a 01
a 02
SQL> select * from b;
FU FUNCNAME
-- ----------
01 add
02 del
03 update
SQL> select a.userid,(case when a.funcid=b.funcid then 'true' else 'false' end) flag,b.funcid,funcname from a,
b where b.funcid=a.funcid(+);
US FLAG FU FUNCNAME
-- ----- -- ----------
a true 01 add
a true 02 del
false 03 update
SQL> select nvl(a.userid,(select userid from a where rownum=1)),(case when a.funcid=b.funcid then 'true' else
'false' end) flag,b.funcid,funcname from a,b where b.funcid=a.funcid(+);
NV FLAG FU FUNCNAME
-- ----- -- ----------
a true 01 add
a true 02 del
a false 03 update
同一楼上的
select nvl(a.userid,'a')
不要意思,没有完全表达出来!
A表:
userid funcid
a 01
a 02
b 01
b 02
b 03
要求结果:
当查userid='a'时:
'flag' funcid funcname
true 01 add
true 02 del
false 03 update
当查userid='b'时:
'flag' funcid funcname
true 01 add
true 02 del
true 03 update
select (case when a.usr_func_id=b.af_id and a.user_id=8
then 'true'
else 'false'
end) flag,
b.af_id,
b.af_func_name
from
re_wa_user_right a,
re_wa_adm_funclist b
where b.af_id=a.usr_func_id(+)
/
搞定了,谢谢各位,给分!
SQL> select * from a;
US FU
-- --
a 01
a 02
b 01
b 02
b 03
SQL> select * from b;
FU FUNCNAME
-- ----------
01 add
02 del
03 update
SQL> select (case when a.funcid=b.funcid then 'true' else 'false' end) flag,b.funcid,funcname from (select * f
rom a where userid='a') a,b where b.funcid=a.funcid(+);
FLAG FU FUNCNAME
----- -- ----------
true 01 add
true 02 del
false 03 update
SQL> select (case when a.funcid=b.funcid then 'true' else 'false' end) flag,b.funcid,funcname from (select * f
rom a where userid='b') a,b where b.funcid=a.funcid(+);
FLAG FU FUNCNAME
----- -- ----------
true 01 add
true 02 del
true 03 update