问题

I have a table named TABLE for example looking like:

ID | email

--------------

1 | a@a.com

1 | b@b.com

2 | c@c.com

3 | d@d.com

3 | e@e.com

and I would like to return something like

ID | email1 | email2

--------------------

1 | a@a.com| b@b.com

2 | c@c.com|

3 | d@d.com| e@e.com

I was wondering how I could use pivoting to help me get rid of duplicate ID rows and just add an extra column for their other emails. Thanks for the help.

SELECT id, email1, email2, email3

FROM (

SELECT id,

email,

ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank

FROM TABLE

)

pivot( max(email) FOR emailRank IN (1 as email1, 2 as email2, 3 as email3));

Edit: fixed above thanks to beach's answer

回答1:

I prefer using the GROUP BY solution with CASE expression.

SELECT

id,

MAX(CASE WHEN emailRank = 1 THEN email END) AS [1],

MAX(CASE WHEN emailRank = 2 THEN email END) AS [2],

MAX(CASE WHEN emailRank = 3 THEN email END) AS [3],

MAX(CASE WHEN emailRank = 4 THEN email END) AS [4]

FROM (

SELECT

id,

email,

ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank

FROM TABLE

)

GROUP BY id;

Original Pivot example had type and missing ")". Try the following to get pivot working:

pivot( max(email) FOR emailRank IN (1,2,3));

回答2:

You can use a procedure or a combination of group by rownum and decode. Personally, I find the procedure approach cleaner.

See: http://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:15151874723724

来源:https://stackoverflow.com/questions/6963684/oracle10g-sql-pivot

oracle10gpiovt,Oracle10g SQL pivot相关推荐

  1. Oracle10g SQL tune adviser简单介绍【转自ITPUB zhouwf0726】

    Oracle10g SQL tune adviser Oracle10g SQL tune adviser简单介绍 本文简单介绍下SQL Tuning Adviser的配置使用方法和一些相关知识点,如 ...

  2. Oracle adviser,Oracle10g SQL tune adviser

    Oracle10g SQL tune adviser简单介绍 本文简单介绍下SQL Tuning Adviser的配置使用方法和一些相关知识点,如果了解SQL Tuning Adviser详细信息,参 ...

  3. pivot unpivot_静态和动态SQL Pivot和Unpivot关系运算符概述

    pivot unpivot In this article, we'll walk-through the SQL Pivot and SQL Unpivot operators and how th ...

  4. Ms sql pivot unpivot

    Ms sql pivot unpivot --建表 create table dbo.orders ( orderid int not null primary key nonclustered,or ...

  5. SQL Pivot 行转列

    pivot 行转列 unpivot 列转行 --CREATE TABLE [dbo].[Pivot_Test]( -- [UserName] [nvarchar](50) NOT NULL, -- [ ...

  6. oracle10g sql跟踪,SQL性能的度量 - 语句级别的SQL跟踪autotrace

    在Oracle 10g之前,使用autotrace还需要创建plustrace角色,并把该角色授予所有用户: @?\rdbms\admin\plustrace.sql grant plustrace ...

  7. SQL pivot与unpivot 实现的简单的:行转列及列转行

    create table #tb(name varchar(32),kechen varchar(32),score float);insert into #tb values('小明','数学',9 ...

  8. Oracle10g SQL分页查询写法与效率比较

    在使用Oracle数据库进行分页查询算法设计时,分页查询的SQL语句基本上可以按照下面给出的模板来进行套用: 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN ...

  9. SQL PIVOT函数进行 行转列

    准备数据源 select TOP 3 F_ProtocolName as "名称",F_TotalFee as "费用" from CRM_Protocol 名 ...

最新文章

  1. AI模糊测试:下一个重大网络安全威胁
  2. php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例
  3. cmd指令大全指令_干货 | Linux 超全实用指令大全
  4. linux 原子整数操作详解 及 volatile (二)
  5. Java / Web项目中的NPM模块Browser-Sync
  6. 【机器学习】 - keras学习 - 图片生成器ImageDataGenerator
  7. comment.html手机文件,comment.html
  8. 【微型计算机原理与接口技术】寻址方式
  9. oracle查询存储过程完整的sql,SQL命令查询Oracle存储过程信息(代码内容等)
  10. [AHK]设置快捷键快速呼出隐藏XYplorer
  11. 创造与魔法java语言_创造与魔法基础魔法大全 超实用基础魔法推荐
  12. win32com为word添加页码(示例)
  13. python快速实现NPV净现值计算
  14. 外卖商品的标准化建设与应用
  15. LeetCode笔试刷题一. 贪心算法
  16. File Upload(文件上传)
  17. Richard Matthew Stallman
  18. 慧数汽车大数据洞察:《车主评价白皮书2019》之新能源篇
  19. thinkServer TS240 windows server 2003安装记录
  20. fpga中的slack_如何在Slack中发起视频通话

热门文章

  1. Solidworks进阶之路
  2. Squid代理服务器——传统代理,透明代理(实践!)
  3. “贺新春 话新年” 博客征文活动,火热开始!
  4. 全文检索工具elasticsearch:第一章:理论知识
  5. 80 Gbps 的 USB4 2.0 要来了!
  6. tigervnc-servere安装与使用
  7. chipyard学习笔记
  8. 工作系列Java开发之利用Java实现ERP系统中Excel表格的导出
  9. 18041 分期还款(加强版)
  10. brew直接安装解压工具