У меня есть две таблицы, сотрудники и сотрудники. Я пытаюсь выполнить 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
Это работает, если я выбираю одного сотрудника. Если я удалю «where EmployeeId = 13», я получаю список всех сотрудников с суммой всех каникул каждого в каждой строке (например, 1300 часов). Как я сломаю его, чтобы он показывал только «Взятый для каждого сотрудника»?
В зависимости от того, какую версию SQL-сервера вы используете, это может быть обработано с помощью оконной функции. – SQLUser44
Вы должны использовать явные соединения - это гораздо более разборчиво. – scsimon
Вы показываете список записей завещания сотрудника, каждый вместе с суммой взятого на себя работника. Желательно? Или вы предпочитаете, чтобы сумма форварда сотрудника тоже составляла, т. Е. Только одна строка результата на одного сотрудника? –