行轉列
with temp as
(select '四川省' nation,
'成都市' 第一,
'绵阳市' 第二,
'德阳市' 第三,
'宜宾市' 第四
from dual
union all
select '湖北省' nation,
'武汉市' 第一,
'宜昌市' 第二,
'襄阳市' 第三,
'' 第四
from dual)
select nation, name, title
from temp unpivot(name for title in(第一, 第二, 第三, 第四)) t
列轉行
1.第一
with temp as(
select '四川省' nation ,'成都市' city,'第一' ranking from dual union all
select '四川省' nation ,'綿陽市' city,'第二' ranking from dual union all
select '四川省' nation ,'德陽市' city,'第三' ranking from dual union all
select '四川省' nation ,'宜賓市' city,'第四' ranking from dual union all
select '湖北省' nation ,'武漢市' city,'第一' ranking from dual union all
select '湖北省' nation ,'宜昌市' city,'第二' ranking from dual union all
select '湖北省' nation ,'襄陽市' city,'第三' ranking from dual
)
select nation,
max(decode(ranking, '第一', city, '')) as 第一,
max(decode(ranking, '第二', city, '')) as 第二,
max(decode(ranking, '第三', city, '')) as 第三,
max(decode(ranking, '第四', city, '')) as 第四
from temp group by nation
2.第二
with temp as
(select '四川省' nation, '成都市' city, '第一' ranking from dual
union all
select '四川省' nation, '綿陽市' city, '第二' ranking from dual
union all
select '四川省' nation, '德陽市' city, '第三' ranking from dual
union all
select '四川省' nation, '宜賓市' city, '第四' ranking from dual
union all
select '湖北省' nation, '武漢市' city, '第一' ranking from dual
union all
select '湖北省' nation, '宜昌市' city, '第二' ranking from dual
union all
select '湖北省' nation, '襄陽市' city, '第三' ranking from dual)
select *
from temp pivot(max(city) for ranking in('第一' AS 第一,
'第二' AS 第二,
'第三' AS 第三,
'第四' AS 第四))
本文详细介绍如何使用SQL进行数据的行转列和列转行操作,包括使用UNPIVOT和PIVOT函数的具体方法,以及通过DECODE和MAX函数实现的数据重组技巧。适用于数据库管理员和数据分析师快速理解和掌握数据透视的实用技能。
1万+

被折叠的 条评论
为什么被折叠?



