2013-02-20 51 views
2

我現在有以下查詢,它返回時間片條目爲特定的僱員和月份:如何彙總我的SQL查詢的結果?

SELECT supervisors.employee, 
     hourscharged.project, 
     hourscharged.chargedescription, 
     hourscharged.account, 
     hourscharged.org, 
     hourscharged.entered_hrs 
FROM accounting 
     INNER JOIN hourscharged 
       ON hourscharged.period_no_cd = accounting.period_no_cd 
     INNER JOIN supervisors 
       ON hourscharged.employeeid = supervisors.employeenumber 
WHERE supervisors.employee = 'JOHN' 
     AND accounting.accountingmonth = 'FEB-13' 
GROUP BY supervisors.employee, 
      hourscharged.project, 
      hourscharged.chargedescription, 
      hourscharged.account, 
      hourscharged.org, 
      hourscharged.entered_hrs 

查詢返回7行具有以下值

Employee | Project | ChargeDescription | Account | Org | ENTERED_HRS: 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.10.5 | 2.00 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.10.5 | 3.50 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.30.4 | 2.00 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.30.4 | 3.50 
JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 1.00 
JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 4.00 
JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 8.00

這些時間表條目。我想說明與合計唯一行的那些行,即:

JOHN | 15113 | MBT Upgrade | 0510 | 1.1.10.5 | 5.50 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.30.4 | 5.50 
JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 13.00

我想:

SELECT supervisors.employee, 
     hourscharged.project, 
     hourscharged.chargedescription, 
     hourscharged.account, 
     hourscharged.org, 
     Sum(hourscharged.entered_hrs) <-- * 
FROM accounting 
     INNER JOIN hourscharged 
       ON hourscharged.period_no_cd = accounting.period_no_cd 
     INNER JOIN supervisors 
       ON hourscharged.employeeid = supervisors.employeenumber 
WHERE supervisors.employee = 'JOHN' 
     AND accounting.accountingmonth = 'FEB-13' 
GROUP BY supervisors.employee, 
      hourscharged.project, 
      hourscharged.chargedescription, 
      hourscharged.account, 
      hourscharged.org, 
      hourscharged.entered_hrs 

,並得到:

JOHN | 15113 | MBT Upgrade | 0510 | 1.1.10.5 | 38.50 
JOHN | 15113 | MBT Upgrade | 0510 | 1.1.30.4 | 38.50 
JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 91.00

這是很奇怪的,因爲下面的查詢(例如)

SELECT chargedescription, 
     Sum(entered_hrs) 
FROM hourscharged 
WHERE employeeid = '123456' 
     AND chargedescription LIKE 'KY13 S & T' 
GROUP BY chargedescription 

給出正確累計的小時數,即:

JOHN | 34188 | KY13 S & T | 0320 | 1.1.30.4 | 70.00

我可以做我想要的SUM嗎?如果是這樣,請指導我。我已經廣泛地搜索了彙總SUM函數的應用,但似乎無法將其應用於我自己的問題。我還發現奇怪的是,在我的複雜查詢中使用SUM而不是ENTERED_HRS給了我幾小時的完全錯誤。如果SUM不起作用,會發生什麼?我無法理解我需要申請的原則。這個查詢所基於的模式可能不是理想的,但它是遺留的,我需要使用它。我也在使用SQL Server 2005.謝謝。

我與INNER JOIN查詢等效於:

SELECT supervisors.employee, 
     hourscharged.project, 
     hourscharged.chargedescription, 
     hourscharged.account, 
     hourscharged.org, 
     hourscharged.entered_hrs 
FROM supervisors, 
     accounting, 
     hourscharged 
WHERE supervisors.employee = 'JOHN' 
     AND hourscharged.employeeid = supervisors.employeenumber 
     AND accounting.accountingmonth = 'FEB-13' 
     AND hourscharged.period_no_cd = accounting.period_no_cd 
GROUP BY supervisors.employee, 
      hourscharged.project, 
      hourscharged.chargedescription, 
      hourscharged.account, 
      hourscharged.org, 
      hourscharged.entered_hrs 

回答

0

的總和()函數工作正常。這是你選擇的其他領域正在導致問題。或者它可能是你的數據。

在這兩行中:

JOHN | 15113 | MBT升級| 0510 | 1.1.10.5 | 38.50

JOHN | 15113 | MBT升級| 0510 | 1.1.30.4 | 38.50

HoursCharged.Org結果有不同的值。你應該看看是什麼原因造成的。