Как добавить сведения о человеке, имеющем несколько значений в одной строке в SQL
Привет, я хочу добавить 5-ю колонку как "оставить", я получаю следующий результат с этим запросом
Empname Deptname LeaveType TotalLeave
Эндрю CSE SickLeave 3
Джордж это CasualLeave 1
Эндрю CSE CasualLeave 2
Джордж это серп 2
Select EmployeeDetails.Empname,DepartmentDetails.Deptname ,LeaveApplication.LeaveType,Sum(LeaveApplication.NoOfDays) As TotalLeave From DepartmentDetails Inner JOIN EmployeeDetails on EmployeeDetails.DeptID = DepartmentDetails.DeptID INNER JOIN LeaveApplication On EmployeeDetails.EmpID = LeaveApplication.EmpID Where LeaveApplication.LeaveFromDate >='2017-01-01' AND LeaveApplication.LeaveFromDate <='2017-05-31' and EmployeeDetails.Status=0 and LeaveApplication.leavetype not in ('Forgot Access Card','Permission','Work from Home','Holiday Allowance/Weekend Allowance','On Duty','Night Shift Allowance') and LeaveApplication.LeaveStatus<>'Rejected' GROUP BY LeaveApplication.EmpID ,DepartmentDetails.Deptname,EmployeeDetails.Empname,LeaveApplication.LeaveTypeэто мой запрос
Результат Нужен Как
Empname Deptname LeaveType TotalLeave
Эндрю CSE SickLeave, Casual 5
Джордж ИТ Казуаллив, Серп 3
Что я уже пробовал:
Select EmployeeDetails.Empname,DepartmentDetails.Deptname ,LeaveApplication.LeaveType,Sum(LeaveApplication.NoOfDays) As TotalLeave From DepartmentDetails Inner JOIN EmployeeDetails on EmployeeDetails.DeptID = DepartmentDetails.DeptID INNER JOIN LeaveApplication On EmployeeDetails.EmpID = LeaveApplication.EmpID Where LeaveApplication.LeaveFromDate >='2017-01-01' AND LeaveApplication.LeaveFromDate <='2017-05-31' and EmployeeDetails.Status=0 and LeaveApplication.leavetype not in ('Forgot Access Card','Permission','Work from Home','Holiday Allowance/Weekend Allowance','On Duty','Night Shift Allowance') and LeaveApplication.LeaveStatus<>'Rejected' GROUP BY LeaveApplication.EmpID ,DepartmentDetails.Deptname,EmployeeDetails.Empname,LeaveApplication.LeaveType
RickZeeland
Я хотел бы отметить, что в PostgreSQL это можно сделать просто с помощью функции string_agg() :
выберите string_agg(leavetype,',')