我在表中有这样的数据
`dept id rank
CSE 1 1
CSE 2 2
CSE 3 3
CSE 4 4
CSE 5 5
CSE 6 6
CSE 7 7
CSE 8 8
MECH 9 1
MECH 10 2
MECH 11 3
MECH 12 4
MECH 13 5
MECH 14 6
MECH 15 7
MECH 16 8
ELEC 17 6`
字符串
我想要这样的输出:
`dept r1 r2 r3 r4 r5 r6 r7 r8
dept 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8
MECH 1/1 1/2 1/3 1/4 1/5 1/6 1/7 1/8
ELEC 0/1 0/2 0/3 0/4 0/5 1/6 0/7 0/8
`
型
我知道我应该使用group by和count,但无法找到解决方案。有人可以帮助这个Oracle查询吗?
使用组和筛选器选择
2条答案
按热度按时间ntjbwcob1#
您可以
PIVOT
:字符串
其中,对于样本数据:
型
输出:
| R1| R2| R3| R4| R5| R6| R6 |
| --|--|--|--|--|--| ------------ |
| 1/1| 1/2| 1/3|四分之一|1/5| 1/6| 1/6 |
| 1/1| 1/2| 1/3|四分之一|1/5| 1/6| 1/6 |
| 0/1| 0/2| 0/3| 0/4| 0/5| 1/6| 1/6 |
fiddle
r8xiu3jd2#
这里有一个选择;读取代码中的注解。
这是你的样本数据,稍微简化了一点:
字符串
查询从这里开始。创建所有
DEPT
和RANK
值的组合(稍后将在外部连接中使用):型
最后,执行外部连接并使用条件聚合来产生所需的结果:
型