求sql大神写一条符合要求的sql语句出来。。。全部身家了

员工薪水表 tb_staff_salary
CREATE TABLE ck.tb_staff_salary(
sal_month char(6) , --薪水月份,如201604 表示2016年4月
staff_serial number(8), --工号
sal number(18,2), --基本工资
sal_subsidy number(18,2), --津贴
sal_dt char(8) --发放日期,如20160505 表示2016年5月5日
);
alter table ck.TB_STAFF_SALARY
add constraint PK_STAFF_SALARY primary key (SAL_MONTH, STAFF_SERIAL);

员工信息表 tb_staff_info
CREATE TABLE ck.tb_staff_info(
staff_serial number(8) , --工号
dept char(2) , --部门
staff_name varchar(10) , --姓名
sex char(1) , --性别,0表示男,1表示女
staff_lead number(8) --工号, 其领导工号
);

查询2016年4月所有薪水介于5000元与8000元之间的员工信息,包括
部门 工号 姓名 领导姓名 基本工资 津贴
注意是领导姓名!!!

select B.dept as 部门,B.staff_serial as 工号,B. staff_name as 姓名, C.staff_name as 领导姓名,A.sal as 基本工资,A.sal_subsidy as 津贴

from ck.tb_staff_salary A
left join ck.tb_staff_info B on B.staff_serial=A.staff_serial

left join ck.tb_staff_info C on B.staff_lead=C.staff_serial

where (sal+sal_subsidy) between 5000 and 8000 and sal_month='201604'追问

测试过了吗

追答

你放进去运行一下,有问题也不会是大问题的

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-01

select tb_staff_info.dept,tb_staff_info.staff_serial,tb_staff_info.staff_name,tb_staff_info.领导姓名,tb_staff_salary.sal,tb_staff_salary.sal_subsid,

from tb_staff_salary,tb_staff_info

where  tb_staff_salary.sal_month=4 and 5000<sum(sal,sal_subsidy)<8000


第2个回答  2016-09-01
--你还差个领导信息表,还有薪水组成是哪些?

追问

领导姓名应该是根据领导工号在员工信息表里面查出来的,领导也是员工,薪水组成是基本工资加上津贴

追答select b.dept 部门, b.staff_serial 工号,b.staff_name 姓名,c.staff_name 领导姓名,a.sal 基本工资,a.sal_subsidy 津贴 from tb_staff_salary a  where sal_month='201604' and sal+sal_subsidy>5000 and sal+sal_subsidy<8000  left join tb_staff_info b on a.staff_serial=b.staff_serial left join tb_staff_info c on a.staff_serial=c.staff_lead

相似回答