2017-04-11 51 views
1

Expected Result will be like我已经张贴了我的问题在链接sql group by order by and top in a same query为我的请求,结果是,与动态列SQL枢

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 

任何人都可以帮我提前

+0

可以u显示基于公司名称,我需要转动, 所以列预期输出................ – Chanukya

+0

将如公司名称Emp1,Emp2,Emp3,Emp4 –

+0

您怎么知道哪个员工是emp1,哪个是emp2 ...? – BeanFrog

回答

0

为支点此查询,谢谢你在你的列表中有很多employess(你的评论),你不需要它是动态的。有规律的转动应该做的伎俩:

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 
+0

呃谢谢你这是我的期望,但它显示了员工以不同的顺序比它必须是如果你看到上面附上的屏幕截图 –

+0

Ooops - 我有一个desc在那里应该'不要。我只是编辑出来...... – BeanFrog