我是oracle的新手。这里我创建了两个表如下: 表1:
create table emp_Det(emp_id varchar2(30), emp_name varchar2(80), PLSQL varchar2(20), ADF varchar2(20));
表2:
create table group(grp_id varchar2(30), grp_name varchar2(80));
我在两个表中都插入了值,如下所示:
表1:emp_Det
Emp_id Emp_name PLSQL ADF
Sample1 Sample1 5 5
Sample3 Sample2 5 5
Sample3 Sample3 5 5
表2:组
grp_id grp_name
ORA PLSQL
ORAS ADF
我们必须从这两个表中选择列,并且必须将一个表的列名与另一个表的列值连接起来。列名称为emp_id,Emp_name,Grp_id,Grp_name,rating。
例如,在第一个表( EMP_DET )中“PLSQL”是列名,“ PLSQL ”是第二个表的值( 组)列grp_name和结果应如下所示
EMP_ID EMP_NAME GRP_ID GRP_NAME Rating
Sample1 Sample1 ORA PLSQL 5
Sample1 Sample1 ORAS ADF 5
请帮我准备查询或程序或建议我
答案 0 :(得分:1)
尝试这样的事情(不完全确定语法):
SELECT emp_id, emp_name, grp_id, grp_name, plsql AS rating
FROM emp_det, group
WHERE grp_name = 'PLSQL'
UNION
SELECT emp_id, emp_name, grp_id, grp_name, adf AS rating
FROM emp_det, group
WHERE grp_name = 'ADF';
答案 1 :(得分:1)
如果您使用11g及以上,那么您可以试试这个:
select t.*, g.grp_id
from
(select *
from emp_det
unpivot
(
rating for group_name in ("PLSQL", "ADF")
)) t join "group" g on t.group_name = g.grp_name