1

我有 3 个表 Emp、Payroll_Emp 和 tbCompany,Emp 和 tbCompany 之间没有关系

我做了那个查询,但是我为所有员工得到了相同的 CeilingEOS 我需要为每个员工求和的 CeilingEOS 我知道我必须将 SUM(CeilingEOS) 放在选择中,但它也不起作用,有人可以帮我吗

DECLARE @CeilingEOS decimal(18,2)

SET  @CeilingEOS=(select SUM (CeilingEOS)  FROM Payroll_Emp inner join emp on Payroll_Emp.Employee_Id = Emp.[ID] where @Date>=Payroll_Emp.Payroll_From)

select Emp.ID, tbCompany.ID, tbCompany.CompanyName, tbCompany.CEmpRepDesc, 
Emp.SSN, 

--case  when Payroll_Emp.CeilingEOS IS NOT NULL then select SUM(CeilingEOS) as ceilingEOS
from Payroll_Emp where Payroll_Emp.Employee_Id = Emp.[ID] group by Emp.ID end


FROM  tbCompany, Emp -- inner join Payroll_Emp on Payroll_Emp.Employee_Id = Emp.[ID]  
where @Date >= Emp.HireSince and Emp.ID=Emp.[ID]
4

1 回答 1

0

你可以试试这个:

DECLARE 
    @CompanyID uniqueidentifier, 
    @CompanyName nvarchar(max), 
    @CEmpRepDesc nvarchar(max)

select top 1 @CompanyID = tbCompany.ID, @CompanyName= tbCompany.CompanyName, @CEmpRepDesc = tbCompany.CEmpRepDesc from tbCompany

select Emp.ID, Emp.SSN, ComputedInfos.CeilingEOS, @CompanyID, @CompanyName, @CEmpRepDesc
from Emp 
left join (select Emp.ID as EmpID, SUM(CeilingEOS) as CeilingEOS from Emp join Payroll_Emp on Payroll_Emp.Employee_Id = Emp.[ID] where @Date >= Emp.HireSince group by Emp.ID) ComputedInfos 
    on ComputedInfos.EmpID = Emp.ID
where @Date >= Emp.HireSince
于 2012-12-26T10:41:33.383 回答