У меня есть таблица со следующей структурой, и я пытаюсь выбрать всех сотрудников, сгруппированных менеджером, с суммой типа рабочего часа и общего количества часов за месяц.
[ID] - Int
[ActualHours] - nvarchar(MAX)
[TimeType] - nvarchar(MAX)
[Cost] - nvarchar(MAX)
[EmployeeName] - nvarchar(MAX)
[SupervisorName] - nvarchar(MAX)
[SupervisorNumber] - nvarchar(MAX)
[Period] - nvarchar(MAX)
[TaskName] -nvarchar(MAX)
Образец таблицы данных:
+------+-------------+-------------+------------+------------------+------------+------------------+--------------+--------------+---------------+
| ID | ActualHours | TimeType | Cost | EmployeeName | EmployeeID | SupervisorName | SupervisorID | Period | TaskName |
+------+-------------+-------------+------------+------------------+------------+------------------+--------------+--------------+---------------+
| 8 | 7.5 | Regular | 18 | Jones, Fred | 42 | Marks ,Thomas | 54 | Dec-17 | Delivery |
| 8 | 22.5 | Regular | 25 | Smith, Bill | 54 | Doe ,John | 12 | Dec-17 | Accounts |
| 8 | 12.5 | OT | 22 | Hinckly, Debra | 66 | Marks ,Thomas | 54 | Dec-17 | Shipping |
| 8 | 7.5 | Regular | 18 | Jones, Fred | 42 | Marks ,Thomas | 54 | Dec-17 | Returns |
| 8 | 7.5 | OT | 27 | Jones, Fred | 42 | Marks ,Thomas | 54 | Dec-17 | Recievables |
| 8 | 2.5 | OT | 27 | Jones, Fred | 42 | Marks ,Thomas | 54 | Dec-17 | Transfers |
+------+-------------+-------------+------------+------------------+------------+------------------+--------------+--------------+---------------+
Я пытаюсь добиться того, чтобы запрос возвращал следующие результаты:
+----------------+----------------+-----------------+------------+------------+----------+--------+
| SupervisorName | EmployeeName | TimeTypeRegular | TimeTypeOT | TotalHours | TaskCost | Period |
+----------------+----------------+-----------------+------------+------------+----------+--------+
| Marks ,Thomas | Jones, Fred | 15 | 9.5 | 24.5 | 270 | Dec-17 |
| Doe ,John | Smith, Bill | 22.5 | 0 | 22.5 | 562.5 | Dec-17 |
| Marks ,Thomas | Hinckly, Debra | 0 | 12.5 | 12.5 | 275 | Dec-17 |
+----------------+----------------+-----------------+------------+------------+----------+--------+
Я пробовал следующее, но я не могу получить как сумму обычных часов, так и часов OT и общую сумму в одном запросе.
select SupervisorName, EmployeeName, TimeType, SUM(convert(decimal(10,2),ActualHours)) As TotalHours, Period
from TableName
where TimeType = 'Regular' and Period = 'Dec-17'
group by EmployeeName, EmployeeID, SupervisorName
Я использую MS SQL Server 2017. Любая помощь приветствуется.