如何在Oracle中将列转换为行?
我有一个表格,这只是一个局部视图,表格包含100多列如何在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,我有
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行出来。我们不能使用透视函数,因为此操作仅用于聚合函数,因此我没有得到所需的输出。