【问题标题】:sql pivot with dynamic columns带有动态列的sql pivot
【发布时间】:2017-04-11 21:17:46
【问题描述】:

我已经在链接sql group by order by and top in a same query 中发布了我的问题,我的请求的结果是,

SELECT
    [Company Name],
    [Designation],
    [comp id],
    [Employee Name]
FROM
(
    SELECT emp.[Emp ID],
        comp.[Company Name],
        design.[Designation],
        emp.[comp id],
        emp.[Employee Name],
        ROW_NUMBER() OVER (PARTITION BY emp.[Comp ID], emp.[Design ID] ORDER BY emp.[Comp ID] desc, emp.[Design ID] desc, emp.[Emp ID] desc) RowNum
    from employee as emp
        join designation as design on design.[Design ID]=emp.[Design ID]
        join company as comp on comp.[Comp ID]=emp.[Comp ID]
) a
WHERE RowNum <=2

谁能帮我转一下这个查询,在此先感谢

【问题讨论】:

  • 你能显示预期的输出吗......
  • 基于我需要旋转的公司名称,因此列将类似于公司名称、Emp1、Emp2、Emp3、Emp4
  • 你怎么知道哪个员工是emp1,哪个是emp2.​​..?
  • 每家公司最多有 4 名员工,所以第一条记录将是 Emp1,第二条记录将是 2,同样明智...,是否可以使用别名
  • “是否可以使用别名”是什么意思?

标签: sql-server sql-server-2008


【解决方案1】:

由于您的列表中有一定数量的员工(来自您的评论),因此您不需要它是动态的。常规支点应该可以解决问题:

select [Company Name],Emp1,Emp2,Emp3,Emp4  from (
    SELECT
        [Company Name],
        [Employee Name],
        'Emp' + cast(ROW_NUMBER() OVER (PARTITION BY [Comp ID] ORDER BY  [Design ID], [Emp ID] desc) as char(2)) as RowNum
    FROM
    (
        SELECT emp.[Emp ID],
            comp.[Company Name],
            design.[Designation],
            emp.[Design ID],
            emp.[comp id],
            emp.[Employee Name],
            ROW_NUMBER() OVER (PARTITION BY emp.[Comp ID], emp.[Design ID] ORDER BY emp.[Comp ID] desc, emp.[Design ID] desc, emp.[Emp ID] desc) RowNum
        from employee as emp
            join designation as design on design.[Design ID]=emp.[Design ID]
            join company as comp on comp.[Comp ID]=emp.[Comp ID]
    ) a
    WHERE RowNum <=2
) as pivotdata
pivot (max([Employee Name]) for [RowNum] in (Emp1,Emp2,Emp3,Emp4)) as P

【讨论】:

  • 嗯,谢谢,这是我所期待的,但它以不同的顺序显示员工,而不是您看到上面所附的屏幕截图
  • 糟糕——我有一个不应该有的描述。我将把它编辑出来......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
相关资源
最近更新 更多