如何旋转一列以在一个单元格中显示数据?
Posted
技术标签:
【中文标题】如何旋转一列以在一个单元格中显示数据?【英文标题】:How to pivot one column to show the data in one cell? 【发布时间】:2016-04-12 22:32:23 【问题描述】:我有这种形式的数据(同一个人的多个 AUTHCD)
PERSNBR AUTHCD VALUE File# Payroll Name Reports To File# Reports To Name
3533 CSR2 5874 109605 Burnette, Peter M 105874 Vo, Timothy
3533 DOPS 5874 109605 Burnette, Peter M 105874 Vo, Timothy
3533 IT03 5874 109605 Burnette, Peter M 105874 Vo, Timothy
3533 LSUP 5874 109605 Burnette, Peter M 105874 Vo, Timothy
3533 OSUP 5874 109605 Burnette, Peter M 105874 Vo, Timothy
但我希望我的数据显示如下:
PERSNBR AUTHCD VALUE File# Payroll Name Reports To File# Reports To Name
3533 CSR2, DOPS, IT03, LSUP 5874 109605 Burnette, Peter M 105874 Vo, Timothy
我希望 AUTHCD 列显示这样的原因是因为当我使用示例数据并创建 s-s-rS 报告时,它只显示第一个 AUTHCD 并删除其余部分,而我想要该员工的所有身份验证代码。 我应该用 s-s-rS 还是 sql 代码来做? 这是我的代码:
select pa.PERSNBR
,pa.AUTHCD
,pu.VALUE
,File#, [Payroll Name]
, [Reports To File#], [Reports To Name]
, [EMC #], [EMC Name]
, 1 as level
from
[DNA_Staging].[dbo].[PERSAUTH] pa
join [DNA_Staging].[dbo].[PERSEMPL] pe
on pa.PERSNBR = pe.PERSNBR
join [DNA_Staging].[dbo].[PERSUSERFIELD] pu
on pe.PERSNBR = pu.PERSNBR
and pu.USERFIELDCD = 'EFNR'
and GETDATE() < isnull(pe.inactivedate,getdate()+1)
join [HR_Staging].[dbo].[HR_EmployeeHierarchyStaging] emp
on pu.VALUE = substring(emp.[Reports To File#],2,6)
or pu.VALUE = substring(emp.[Reports To File#],3,6)
where [Reports To File#] = @ReportToFile
提前致谢!
【问题讨论】:
【参考方案1】:下面的堆栈溢出链接有类似的问题和答案。使用 CROSS APPLY,您需要先用逗号分隔列连接,然后使用 PIVOT。
Stack Overflow Link
【讨论】:
以上是关于如何旋转一列以在一个单元格中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章