SELECT t.EmployeeID, isnull(sum(t1.value),0) as c1, 
isnull(sum(t2.value),0) as c2 ,
isnull(sum(t3.value),0) as c3FROM EMPLOYEE t left join Table1 t1 on t1.EmployeeID=t.EmployeeID 
and t1.type=10 and t1.flag=1 
left join Table1 t2 on t2.EmployeeID=t.EmployeeID 
and t2.type=11  and t1.flag=1 
left join Table1 t3 on t3.EmployeeID=t.EmployeeID 
and t3.type=11  and t3.flag=1 Where t.cid=110 
group by t.EmployeeID 
order by t.EmployeeID 现在结果 
employeeid        c1      c2    c3
1                10      100    200
2                12      200    300
3                10      100    400
而正确结果是
employeeid       c1      c2     c3
1                10      50     100
2                12      100    150
3                10      50     200
就是第1个字段SUM的字段正常  后面的都是翻了1倍

解决方案 »

  1.   

    and t1.type=10 and t1.flag=1 
    and t2.type=11  and t1.flag=1 
    and t3.type=11  and t3.flag=1 
    放到where后面试试
      

  2.   

    and t1.type=10 and t1.flag=1 
    left join Table1 t2 on t2.EmployeeID=t.EmployeeID 
    and t2.type=11  and t1.flag=1 
    left join Table1 t3 on t3.EmployeeID=t.EmployeeID 
    and t3.type=11  and t3.flag=1 
      

  3.   

    t1.type=10 and t1.flag=1
    t2.type=11  and t1.flag=1
    t3.type=11  and t3.flag=1
    放到where后
      

  4.   

    放到WHERE 后 还是一样 就第1列正常
      

  5.   

    and t1.type=10 and t1.flag=1 
    left join Table1 t2 on t2.EmployeeID=t.EmployeeID 
    and t2.type=11  and t1.flag=1 
    left join Table1 t3 on t3.EmployeeID=t.EmployeeID 
    and t3.type=11  and t3.flag=1 这里是打出了刚刚
    and t2.type=11  and t2.flag=1 
      

  6.   

    确定逻辑上用lfet join?用full join看看