如何在Oracle中编写SQL来显示我的案例中的数据?
我有一张这样的桌子-如何在Oracle中编写SQL来显示我的案例中的数据?,sql,oracle,matrix,Sql,Oracle,Matrix,我有一张这样的桌子- create table tbl1 ( id number, role number ); insert into tbl1 values (1, 1); insert into tbl1 values (2, 3); insert into tbl1 values (1, 3); create table tbl2 ( role number, meaning varchar(50) ); insert into tbl2 values (1, 'changi
create table tbl1
(
id number,
role number
);
insert into tbl1 values (1, 1);
insert into tbl1 values (2, 3);
insert into tbl1 values (1, 3);
create table tbl2
(
role number,
meaning varchar(50)
);
insert into tbl2 values (1, 'changing data');
insert into tbl2 values (2, 'move file');
insert into tbl2 values (3, 'dance');
我希望sql结果如下所示-
id role_meaning is_permitted
1 changing data yes
1 move file no
1 dance yes
2 changing data no
2 move file no
2 dance yes
请帮忙,我怎么做?我尝试过几种方法,但不确定如何做到这一点。您可以在这里使用
查询1:
select tbl1.id,
tbl2.meaning,
case when tbl1.role is NULL then 'no' else 'yes' end is_permitted
from tbl1
partition by (id) right outer join tbl2
on tbl1.role = tbl2.role
order by tbl1.id, tbl2.role
| ID | MEANING | IS_PERMITTED |
|----|---------------|--------------|
| 1 | changing data | yes |
| 1 | move file | no |
| 1 | dance | yes |
| 2 | changing data | no |
| 2 | move file | no |
| 2 | dance | yes |
:
select tbl1.id,
tbl2.meaning,
case when tbl1.role is NULL then 'no' else 'yes' end is_permitted
from tbl1
partition by (id) right outer join tbl2
on tbl1.role = tbl2.role
order by tbl1.id, tbl2.role
| ID | MEANING | IS_PERMITTED |
|----|---------------|--------------|
| 1 | changing data | yes |
| 1 | move file | no |
| 1 | dance | yes |
| 2 | changing data | no |
| 2 | move file | no |
| 2 | dance | yes |
您的
列中的数据从哪里来?表tbl1
和tbl2
似乎没有。您好,这应该从“tbl1”表中确定(如果值为1,则为是,如果表中不存在,则为否)