1

Emp、Payroll_Emp、および tbCompany の 3 つのテーブルがありますが、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 に答える