【问题标题】:Apply Pivot on multiple colums and rows在多列和多行上应用 Pivot
【发布时间】:2020-01-21 05:17:44
【问题描述】:

这是我的示例表,我想旋转 Leave 列并获得最大值以离开开放、借方和贷方价值以及余额离开

平衡叶子的公式:leaveopen + leavecr - leaveused - leavedb

下面是预期的输出

到目前为止,我已经设法让leaveopening,但无法在单个查询中获取所有值

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

【问题讨论】:

  • 我们很乐意为您提供帮助,但不会全部为您服务。试一试,告诉我们你卡在哪里了。
  • @DaleK 请检查更新后的问题,我添加了我尝试过的查询
  • 如果您希望我们帮助您设计查询,您最好给我们提供表格架构或数据,而不是表格截图。

标签: sql sql-server sql-server-2012 azure-sql-database


【解决方案1】:

这是一个使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2013-11-04
    相关资源
    最近更新 更多