Oracle 中如何将列转换为行?

How to convert columns to rows in Oracle?

我有一个table这种形式(这只是部分视图,table包含100多列)。

 env_id    property_TYPE   property_name
  1         user            user1
  1         host            host1
  99        user            user2
  99        host            host2
  1         FS              fs1

对于单个 env_id,我有不同种类的 属性 类型。
我希望将这些详细信息转换为列并采用以下形状:

Env_id     user    host
 1          user1   host1
 99         user2   host2

我怎样才能做到这一点?

你可以通过PIVOT来完成,下面是一个例子

Select * from (
   select property_name, env_id
   from table t
)
pivot 
(
   count(property_TYPE)
   for property_TYPE in ('USER','HOST')
)
order by env_id
/

解码函数的帮助下,我能够实现我的要求。

pivot也是另一种解法