私は2つのテーブルEmployeesとEmployeeVacationsを持っています。私は各従業員がどれだけ多くの休暇を取ったかと現在の現在の残高の合計を取得するためにSQLクエリを実行しようとしています。私の現在のSQLクエリは次のとおりです。合計でSQLクエリ内のSQLクエリ
SELECT
e.PIN,
e.FirstName,
e.LastName,
e.Uniform,
e.AL_Cap,
ev.Value AS '10/1 Balance',
(SELECT
SUM(value)
FROM EmployeeVacations
WHERE CreationDate >= '2016-10-01'
AND Vacation_Type = 'Taken'
AND Vacation_Kind = 'AL'
AND EmployeeId = 13)
AS Taken
FROM employees e,
EmployeeVacations ev
WHERE e.Id = ev.EmployeeId
AND ev.IsHistory = 0
AND ev.Vacation_Type = 'Forward'
AND ev.Vacation_Kind = 'AL'
AND EmployeeId = 13
ORDER BY e.LastName, e.FirstName
これは私が1人の従業員を選んだ場合に機能します。 「EmployeeId = 13」の場所を削除すると、すべての従業員のリストがすべての行の合計休暇の合計(1300時間など)で取得されます。どのように私はそれを打ち破ることができますので、Takenは各従業員専用です。
これは、使用しているSQL Serverのバージョンによっては、ウィンドウ関数を使用して処理する可能性があります。 – SQLUser44
明示的な結合を使用する必要があります。これははるかに読みやすいです。 – scsimon
従業員の前払いレコードのリストを、従業員の合計額と共に表示しています。これが望ましいですか?あるいは、従業員の前払いの合計、つまり従業員一人につき結果の行が1つだけであることを望みますか? –