将任意数量的列转换为行

时间:2019-07-23 20:46:49

标签: sql oracle pivot

我也有一张桌子


ID | errors     | condition  
p1 | fail1      | minor
p1 | fail2      | criitcal
.      .
.      .
.      .
p1 | failn      | minor 
p2 | fail1      | minor  
p2 | fail2      | critical
 .
 .
 .
p2 | failn      | critical 

对于任意n,我想创建一个可以对此进行转置的视图,以便每个failk都是它自己的colunn,使它看起来像这样


ID | fail1 | fail2    | .......| failn   |
p1 | minor | critical |          minor 
p2 | minor | critical |          critical

我能够通过蛮力对每一列的sql语句进行硬编码来实现此目的

pivot
(
  max(condition)
  for errors in 
  (
    'fail1', 'fail2' ... 'failn' 
  )
)

但是我不会每次都知道第n个值。有没有一种自动的方法可以实现这一点,以解决一列中需要转换为行的元素的任意数量?

0 个答案:

没有答案