从查询结果中删除重复的列

时间:2016-07-01 12:38:11

标签: sql sql-server

请帮帮我!! Newby with Sql查询

Select * 
from(
    select  EmpID,  
            sum(IncomeTax) as TaxAmount,
            sum(bsalary) as SalaryAmount 
    from PayrollHistory   Pay 
    group by EmpID
) cumSalary
Right JOIN (
    Select  PayrollHistory.EmpID,
            (select firstName +'  '+coalesce(middleInitial,' ')+' '+ lastName  
            from Employee 
            where Employee.EmpID=PayrollHistory.EmpID)as   name,
            PayrollHistory.IncomeTax,
            (PayrollHistory.bsalary+sum(ISNULL(Allw.amount,0)))totalTaxableSUM
    from PayrollHistory  
    left join (
            select * 
            from AllowanceHistory 
            where AllowanceHistory.taxStatus=1  
            ) as Allw 
        on Allw.EmpID=PayrollHistory.EmpID and Allw.payMonth=PayrollHistory.payMonth  
    where PayrollHistory.payMonth=3
    group by  PayrollHistory.EmpID, PayrollHistory.IncomeTax, PayrollHistory.bsalary
) as tbl 
    on tbl.EmpID =cumSalary.EmpID

上面的查询结果给出了2个相同的EmpID行。如何删除其中一个仍然得到相同的结果

2 个答案:

答案 0 :(得分:2)

而不是第一个Select *指定您需要的所有行:

select  cumSalary.EmpID,  
        cumSalary.TaxAmount,
        cumSalary.SalaryAmount,
        tbl.name,
        tbl.IncomeTax,
        tbl.totalTaxableSUM

答案 1 :(得分:1)

使用列名选择而不是使用*,请参阅以下内容

Select cumSalary.*,PayrollHistory.name , **....etc** from(
select EmpID,  sum(IncomeTax) as TaxAmount,sum(bsalary) as SalaryAmount from     
PayrollHistory   Pay group by EmpID
) cumSalary
Right JOIN (
Select PayrollHistory.EmpID,(select firstName +'  '+coalesce(middleInitial,'   
')+' '+ lastName from Employee where   
 Employee.EmpID=PayrollHistory.EmpID)as   name,
  PayrollHistory.IncomeTax,(         PayrollHistory.bsalary+sum(ISNULL(Allw.amount,0)  
))totalTaxableSUM
from PayrollHistory  
left join (select * from AllowanceHistory where AllowanceHistory.taxStatus=1  
) as Allw on 
Allw.EmpID=PayrollHistory.EmpID and Allw.payMonth=PayrollHistory.payMonth  
where PayrollHistory.payMonth=3
group by   
PayrollHistory.EmpID,PayrollHistory.IncomeTax,PayrollHistory.bsalary
) as tbl on tbl.EmpID =cumSalary.EmpID