我現在有以下查詢,它返回時間片條目爲特定的僱員和月份:如何彙總我的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