oracle 行转列及列转行

server/2024/9/22 22:47:23/

行转列

  1. 使用pivot函数实现 行转列

    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 (select nation,city,ranking from temp)pivot (max(city) for ranking in ('第一' as 第一,'第二' AS 第二,'第三' AS 第三,'第四' AS 第四));

    说明:pivot(聚合函数 for 列名 in(类型)),其中 in(‘’) 中可以指定别名,in中还可以指定子查询,比如 select distinct ranking from temp

  2. 使用max结合decode函数实现 行转列

    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;

        说明:decode的用法:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

列转行

  1. 使用unpivot函数实现 列转行

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

说明:unpivot(自定义列名/*列的值*/ for 自定义列名/*列名*/ in(列名))


http://www.ppmy.cn/server/40474.html

相关文章

利用爬虫解决数据采集难题

文章目录 安装为什么选择 BeautifulSoup 和 requests?安装 BeautifulSoup 和 requests解决安装问题 示例总结 在现代信息时代,数据是企业决策和发展的关键。然而,许多有用的数据分散在网络上,且以各种格式和结构存在,因…

数字藏品平台遭受科技攻击时的防护策略与攻击类型判定

随着区块链技术和数字经济的飞速发展,数字藏品平台逐渐成为炙手可热的投资领域。然而,这也使其成为了黑客攻击的重要目标。本文将深入探讨数字藏品平台可能遭遇的几种主要科技攻击类型,并提出相应的防护措施和判定方法。 一、51%攻击 攻击描…

MySQL数据库基础(数据库操作,常用数据类型,表的操作)

MySQL数据库基础(数据库操作,常用数据类型,表的操作) 前言 数据库的操作1.显示当前数据库2.创建数据库3.使用数据库4.删除数据库 常用数据类型1.数值类型2.字符串类型3.日期类型 表的操作1.查看表结构2.创建表3.删除表 总结 前言 …

FPGA第2篇,FPGA与CPU GPU APU DSP NPU TPU 之间的关系与区别

简介:首先,FPGA与CPU GPU APU NPU TPU DSP这些不同类型的处理器,可以被统称为"处理器"或者"加速器"。它们在计算机硬件系统中承担着核心的计算和处理任务,可以说是系统的"大脑"和"加速引擎&qu…

js实现json数据可编辑

背景 项目中有低代码平台,由于历史脏数据和非同步编辑的问题,偶尔会出现数据错乱的问题,希望有一个快捷的方式修改数据 之前在用Formily的时候有注意到designable/react 里面的json数据编辑功能非常不错如果能应用到项目里就完美了 design…

Android ViewFlipper

Android ViewFlipper 在很多APP都有如下的头条/热榜效果(上下自动翻滚) 这种效果可以使用很多方式实现,有一个简便的方式可以使用ViewFlipper控件实现,ViewFlipper控件继承结果如下: 可以看出ViewFlipper 继承自ViewA…

git cherry-pick命令使用

git cherry-pick 是一个非常实用的Git命令,它允许你将一个或多个提交从一个分支复制并应用到另一个分支上,而不需要进行整个分支的合并。这对于只想将某些特定更改而非整个分支历史引入当前工作的情况非常有用。以下是使用 git cherry-pick 的基本步骤和…

centos7同步银河麒麟服务器SP系列外网yum源包同步不完整问题

centos7同步银河麒麟服务器SP系列外网yum源包同步不完整问题 一 问题描述二 解决方法三 外网源配置步骤 一 问题描述 Red 7.7 x86架构同步银河麒麟服务器SP arm架构外网源的yum包不完整问题,yum repolist查看源里面有15000左右的包,使用reposync命令同步…