我有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]
答案 0 :(得分: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