2

我是甲骨文的新手。在这里,我创建了两个表,如下所示: 表 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

请帮我准备查询或程序或建议我

4

2 回答 2

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';
于 2013-10-16T13:40:33.077 回答
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

这是一个 sqlfiddle 演示

于 2013-10-16T13:52:52.690 回答