日期:2014-05-17  浏览次数:20441 次

请教一个二表的复合查询,请高手指点小点。
需要根据下面两个表,算出前、后期业绩的提成及提成合计,请问要怎么写呢?感觉挺复杂的,写晕了。


------解决方案--------------------
--下面生成工资表
select a.姓名,a.职位,a.前期业绩*b.前期提成比例 as  前期提成,
a.后期业绩*b.后期提成比例 as  后期提成,
a.前期业绩*b.前期提成比例+a.后期业绩*b.后期提成比例 as 提成合计  
from 员工业务情况表 a,员工提成方式表 b
where a.职位=b.职位

------解决方案--------------------
Select A.姓名,A.职位,前期提成=A.前期业绩*B.前期提成 ,后期提成=A.后期业绩*B.后期提成比例,
提成合计=A.前期业绩*B.前期提成+A.后期业绩*B.后期提成比例
From  员工业务情况表 A
Join  员工提成方式 B On A.职位=B.职位  

------解决方案--------------------

declare @员工业务情况表 table 
(姓名 varchar(4),职位 varchar(8),前期业绩 int,后期业绩 int)
insert into @员工业务情况表
select '张三','业务员',50000,4500 union all
select '李四','出纳',3800,1500 union all
select '王五','业务经理',150000,80000

declare @员工提成方式表 table 
(职位 varchar(8),前期提成比例 numeric(18,4),后期提成比例 numeric(18,4))
insert into @员工提成方式表
select '业务员',1.2,1.3 union all
select '出纳',1.5,1.6 union all
select '业务经理',1.3,1.5

select 
a.姓名,a.职位,
前期业绩*前期提成比例/100 as 前期提成,
后期业绩*后期提成比例/100 as 后期提成,
前期业绩*前期提成比例/100+后期业绩*后期提成比例/100 as 提成合计
from @员工业务情况表 a 
left join @员工提成方式表 b on a.职位=b.职位
/*
姓名   职位       前期提成                   后期提成                  提成合计
---- -------- ---------------------- --------------------- ---------------------------
张三   业务员      600.00000000           58.50000000           658.50000000
李四   出纳       57.00000000            24.00000000           81.00000000
王五   业务经理     1950.00000000          1200.00000000         3150.00000000
*/