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也是另一种解法
我有一个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也是另一种解法