create table EMP_EMPLOYEE_
(
ID CHAR(32) not null,
name varchar(20) ); --员工表create table BFT_
(
id CHAR(32) not null,
employee CHAR(32) not null,
base number,
month number
); --数据表1 employee字段关联员工表的id字段
create table CFT_
(
id CHAR(32) not null,
employee CHAR(32) not null,
base number,
month number
); --数据表2 employee字段关联员工表的id字段
提供数据:
insert into EMP_EMPLOYEE_ (ID, NAME)values ('1 ', '张三');
insert into BFT_ (ID, EMPLOYEE, BASE, MONTH)values ('000001 ', '1 ', 10, 1);
insert into BFT_ (ID, EMPLOYEE, BASE, MONTH)
values ('000002 ', '1 ', 20, 2);
insert into CFT_ (ID, EMPLOYEE, BASE, MONTH)
values ('000001 ', '1 ', 80, 2);
(员工表)
1 1 张三(数据表1)
1 000001 1 10 1
2 000002 1 20 2(数据表2)
1 000001 1 80 2
我的错误语句:
( select a.name,b.base,c.base from EMP_EMPLOYEE_ a
left join BFT_ b on b.employee = a.id
left join CFT_ c on c.employee = a.id )
查出来的结果:
1 张三 10 80
2 张三 20 80
我要的结果:
1 张三 10 80
2 张三 20 声明 数据表1 和数据表2 没有任何关系 但他们都和员工表有着关系、其实不至数据1 和2 甚至有3 和4、、
看懂的了帮帮忙呀!
我实在是不会写这条语句了
其实目的就是多个表放在一列显示
就是 同一个员工 要显示数据1表的字段 也要显示数据2表的字段、
(
ID CHAR(32) not null,
name varchar(20) ); --员工表create table BFT_
(
id CHAR(32) not null,
employee CHAR(32) not null,
base number,
month number
); --数据表1 employee字段关联员工表的id字段
create table CFT_
(
id CHAR(32) not null,
employee CHAR(32) not null,
base number,
month number
); --数据表2 employee字段关联员工表的id字段
提供数据:
insert into EMP_EMPLOYEE_ (ID, NAME)values ('1 ', '张三');
insert into BFT_ (ID, EMPLOYEE, BASE, MONTH)values ('000001 ', '1 ', 10, 1);
insert into BFT_ (ID, EMPLOYEE, BASE, MONTH)
values ('000002 ', '1 ', 20, 2);
insert into CFT_ (ID, EMPLOYEE, BASE, MONTH)
values ('000001 ', '1 ', 80, 2);
(员工表)
1 1 张三(数据表1)
1 000001 1 10 1
2 000002 1 20 2(数据表2)
1 000001 1 80 2
我的错误语句:
( select a.name,b.base,c.base from EMP_EMPLOYEE_ a
left join BFT_ b on b.employee = a.id
left join CFT_ c on c.employee = a.id )
查出来的结果:
1 张三 10 80
2 张三 20 80
我要的结果:
1 张三 10 80
2 张三 20 声明 数据表1 和数据表2 没有任何关系 但他们都和员工表有着关系、其实不至数据1 和2 甚至有3 和4、、
看懂的了帮帮忙呀!
我实在是不会写这条语句了
其实目的就是多个表放在一列显示
就是 同一个员工 要显示数据1表的字段 也要显示数据2表的字段、
我只粗粗看了下,对比lz的结果,去除重复的c.base,囧
SELECT NAME,base1,Decode(rn,1,base2,null)base2 FROM
(
select a.name,b.base base1,c.base base2,Row_Number() over (PARTITION BY a.NAME ORDER BY c.base)rn from EMP_EMPLOYEE_ a
left join BFT_ b on b.employee = a.id
left join CFT_ c on c.employee = a.id
)