这是查询的结果。有很多组,但最多三个与一个人相关联。
NAME ID GROUPA
=====================
James 20 A
James 20 B
James 20 D
Michael 30 A
Michael 30 B
Michael 30 C
Jordan 40 I
我想要的是...
NAME ID GROUP1 GROUP2 GROUP3
===========================================
James 20 A B D
Michael 30 A B C
Jordan 40 I
我试过这个查询,但它不起作用...
SELECT NAME, ID, GROUPA
FROM
(SELECT NAME, ID,
ROW_NUMBER() OVER (PARTITION BY GROUPA ORDER BY EMPLOYEE_ID) AS GROUP
FROM TABLE1)
GROUP BY NAME, ID, GROUPA
感谢您的指导。
最佳答案
select name,id,
max(case when groupa = 'A' then groupa end) as group1,
max(case when groupa = 'B' then groupa end) as group2,
max( case when groupa = 'C' then groupa end) as group3
from tablename
group by name, id
如果 groupa 的数量是固定的,上面的查询就可以工作。
编辑:使用枢轴
select * from
(select name, id , groupa from tablename)
pivot xml (
max(groupa) for groupa in
(select distinct groupa from tablename)
)
感谢您的解决方案。我快到了。这是我运行此查询后得到的。实际上有 53 个不同的组,因此它添加了 53 列,但分配给用户的最大组数是 5。
NAME ID A B C D E F G H
James 20 A null null null null null null H
Michael 30 A B null null E null null null
我如何获得这样的结果...
NAME ID GROUP_1 GROUP_2 GROUP_3
James 20 A H
Michael 30 A B E
如何获得我在问题中提到的结果? 谢谢,
关于sql - ORACLE中的行到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828265/