現在、特定の従業員と月のタイム シート エントリを返す次のクエリがあります。
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 行を返します。
従業員 | プロジェクト | プロジェクト | 料金説明 | アカウント | 組織 | ENTERED_HRS: ジョン | 15113 | MBT アップグレード | 0510 | 1.1.10.5 | 2.00 ジョン | 15113 | MBT アップグレード | 0510 | 1.1.10.5 | 3.50 ジョン | 15113 | MBT アップグレード | 0510 | 1.1.30.4 | 2.00 ジョン | 15113 | MBT アップグレード | 0510 | 1.1.30.4 | 3.50 ジョン | 34188 | KY13 S&T | 0320 | 1.1.30.4 | 1.00 ジョン | 34188 | KY13 S&T | 0320 | 1.1.30.4 | 4.00 ジョン | 34188 | KY13 S&T | 0320 | 1.1.30.4 | 8.00
これらはタイムシート エントリです。これらの行の合計を含む一意の行を表示したい、つまり:
ジョン | 15113 | MBT アップグレード | 0510 | 1.1.10.5 | 5.50 ジョン | 15113 | MBT アップグレード | 0510 | 1.1.30.4 | 5.50 ジョン | 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
そして得た:
ジョン | 15113 | MBT アップグレード | 0510 | 1.1.10.5 | 38.50 ジョン | 15113 | MBT アップグレード | 0510 | 1.1.30.4 | 38.50 ジョン | 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
正確に合計された時間、つまり:
ジョン | 34188 | KY13 S&T | 0320 | 1.1.30.4 | 70.00
SUM でやりたいことはできますか? もしそうなら、私を導いてください。集計SUM関数の適用について広範囲に検索しましたが、それを自分の問題に適用できないようです。また、複雑なクエリで ENTERED_HRS に対して SUM を使用すると、まったく間違った合計時間が得られるのも奇妙です。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