开发者社区> 问答> 正文

在SQL Server中将重复数据从行透视到列

由于收到了针对特定候选人的反馈数量,我有一个重复值的数据集。

共有3种反馈类型:“安全”,“其他”和“社交”。

候选人可以拥有多个这些反馈。并且此反馈类型名称必须通过将Org和orgtype表连接在一起来获取。但这给了我结果集中重复的值。

几列查询如下:

select 
    c.id  as [Candidate ID]
    ,c.name as [Candidate Name]       
    ,cf.status as [feedback status]
    ,e.name as [Feedback Type]
from
    Candidates c
left join
    Candidate_Feedback CF ON CF.CandidateId = c.ID
left join
    Organizations d on CF.OrgId = d.ID
left join 
    OrganizationTypes e on d.OrganizationTypeId = e.Id

如何在每个候选人只需要一行的地方以及列中的反馈类型而不是行中旋转数据?(例如col1-Feedback_social,Col2-Feedback_Other,col3-Feedback_Security,col4-'N / A'(如果没有反馈)

由于查询中的其他情况,我需要为每位候选人提供这3列。

展开
收起
祖安文状元 2020-01-04 15:58:52 938 0
1 条回答
写回答
取消 提交回答
  • 您可以使用条件聚合,例如:

    select 
        c.id  as [Candidate ID],
        c.name as [Candidate Name]       
        max(case when e.name = 'Social' then cf.status end) [Feedback Social],
        max(case when e.name = 'Other' then cf.status end) [Feedback Other],
        max(case when e.name = 'Security' then cf.status end) [Feedback Security]
    from Candidates c
    left join Candidate_Feedback CF ON CF.CandidateId = c.ID
    left join Organizations d on CF.OrgId = d.ID
    left join OrganizationTypes e on d.OrganizationTypeId = e.Id
    group by c.id, c.name
    
    2020-01-04 15:59:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载