这个SQL语句怎么写,在线等待,谢谢了!

lmh79 2002-09-04 10:57:27
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
...全文
43 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzyfoot 2002-09-04
  • 打赏
  • 举报
回复
同一楼上的
select nvl(a.userid,'a')
zhaoyongzhu 2002-09-04
  • 打赏
  • 举报
回复
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
zhaoyongzhu 2002-09-04
  • 打赏
  • 举报
回复
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
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
---如果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
zhaoyongzhu 2002-09-04
  • 打赏
  • 举报
回复
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
lmh79 2002-09-04
  • 打赏
  • 举报
回复
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(+)
/

搞定了,谢谢各位,给分!
lmh79 2002-09-04
  • 打赏
  • 举报
回复
不要意思,没有完全表达出来!

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

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧