2014-07-24 105 views
0

我有三个表,我需要从表学生的代码列中总结表薪和薪酬2的字段。
我写了一个查询,但第一个表(这里是表支付)是正确的答案,但第二个表(这里是表pay2)是每个记录重复到第一个表记录计数和答案是错误的!总结来自三个表的字段

SELECT DISTINCT STUDENTS.CODE, 
       STUDENTS.NAME, 
       Sum(Cast (PAY.PRICE AS INT)) AS payTotal, 
       Sum(Cast (PAY2.PRICE AS INT)) AS pay2Total 
FROM STUDENTS 
     LEFT OUTER JOIN PAY 
        ON STUDENTS.CODE = PAY.CODE 
     LEFT OUTER JOIN PAY2 
        ON STUDENTS.CODE = PAY2.CODE 
GROUP BY STUDENTS.CODE, 
      STUDENTS.NAME 

回答

0

你可以这样做:

SELECT 
    students.code, 
    students.name, 
    (
     SELECT 
      SUM(cast (pay.price AS INT)) 
     FROM 
      pay 
     WHERE 
      students.code=pay.code 
    ) AS payTotal, 
    (
     SELECT 
      SUM(cast(pay2.price AS INT)) 
     FROM 
      pay2 
     WHERE 
      students.code=pay2.code 
    ) AS pay2Total 
FROM 
    students