如何在Oracle中将列转换为行?

如何在Oracle中将列转换为行?,oracle,pivot,Oracle,Pivot,我有一个表格,这只是一个局部视图,表格包含100多列 env_id property_TYPE property_name 1 user user1 1 host host1 99 user user2 99 host host2 1 FS fs1 对于单个env_id,我有

我有一个表格,这只是一个局部视图,表格包含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也是另一种解决方案。

属性类型不是标识符,如果我在修改后的代码下面添加use,请从表t pivot countproperty中选择*从属性名称、环境id、属性类型,选择“用户”中属性类型的pivot countproperty类型,“主机”按环境id排序/在“用户和主机”列下,我得到的是数字。如果我使用“最小”或“最大”,则我得到的是所需的输出格式,但所有行都没有从3000行中出来,只有90行出来。我们不能使用透视函数,因为此操作仅用于聚合函数,因此我没有得到所需的输出。