Применить Pivot на несколько столбцов и рядов - PullRequest
1 голос
/ 21 января 2020

Это моя примерная таблица, и я хочу повернуть столбец Leave и получить максимум, чтобы оставить начальные, дебетовые и кредитовые значения, а также балансовые листы.

Формула для балансовых листов: оставьте открытым + оставить - оставленный - leavedb

enter image description here

Ниже ожидаемый результат

enter image description here

до сих пор мне удалось получить открытие, но я не смог получить все значения в одном запросе

select  e.Code,e.FName + ' ' + case when  e.LName !=null then  e.LName else ' ' end [Name],l.*
from .EmployeeDetail e
inner join (select * from(select Leave,LeaveOpen,EmployeeId,CompanyId from LeaveOpening where Leave in ('PL','SL','Coff') and employeeid=534 ) src  pivot(max(LeaveOpen) for Leave in (PL,SL,Coff)) as src2) l on e.Id = l.EmployeeId and e.CompanyId = l.CompanyId and employeeid=534

1 Ответ

0 голосов
/ 21 января 2020

Вот краткий пример использования оператора Case вместо Pivot.


select EmployeeId
       ,MAX(CASE WHEN Leave = 'PL' THEN LeaveOpen ELSE 0 END) AS [PL Opening]
       ,MAX(CASE WHEN Leave = 'PL' THEN LeaveCredit ELSE 0 END) AS [PL Credit]
  from LeaveOpening 
  group by EmployeeID
...