`
lengyue
  • 浏览: 144476 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

oracle行转列

阅读更多

在做统计分析时数据库中的表以行的形式存储,但经常会以列的形式呈现给用户。我最近做过两个功能都是这样的需求。

涉及到行转列的时候方式一般无外乎以下几种方式:

1.通过编程程序(java,pas,c#)进行遍历,形成集合。

2.如果是oracle,可以通过pl/sql,写cursor进行遍历。

3.如果是oracle,通过聚合函数。

4.如果是oracle,通过分析函数。

我遇到这样的情况经常使用3,4两种方式.我举例来说明:

数据库表example

BSC    LOGTIME        CHECKVALUE

BSC1 2008-05-18 01   1

BSC2 2008-05-18 01   2

BSC3 2008-05-18 01   3

BSC4 2008-05-18 01   1

BSC5 2008-05-18 01   3

BSC1 2008-05-18 02   4

BSC2 2008-05-18 02   5

BSC3 2008-05-18 02   1

BSC4 2008-05-18 02   4

BSC5 2008-05-18 02   1

BSC1 2008-05-18 03   1

BSC2 2008-05-18 03   1

BSC5 2008-05-18 03   1

我们要给用户呈现的内容

BSC名 1时 2时 3时 4时 5时 6时 7时 8时 9时 10时 11时 ....24时

BSC1   1    1     1   1   1    1    1 .....

BSC2  2   2      2   22   22 22 22.....

...

使用聚合函数

select BSC,

max(decode(TO_CHAR(logtime,'HH24'),1,value,null) one,

max(decode(TO_CHAR(logtime,'HH24'),2,value,null) two,

....

from example

group by BSC

使用分析函数

数据库表example

BSC    NBAO

BSC1  BSC2

BSC1 BSC3

BSC1 BSC4

BSC2 BSC1

BSC2 BSC3

BSC2 BSC4

...

要呈现的表

BSC  NBAO1 NBAO2 NBAO3 NBAO4

BSC1 BSC2   BSC3  BSC4   ...

BSC2 BSC3  BSC4 ....

使用分析函数

select BSC,

max(decode(rn,1,NBAO,null)NBAO1,

max(decode(rn,2,NBAO,null)NBAO2,

max(decode(rn,3,NBAO,null)NBAO3,

max(decode(rn,4,NBAO,null)NBAO4

from(

select BSC,NBAO,row_number() over(partition BSC order by bsc) rn

from example)

group  by BSC

.

以上使用sql语句可以实现行转列,当然,前提条件是转换后行数是固定的.

 

 

3
5
分享到:
评论
1 楼 elice 2008-05-22  
我出写过这样的ORACLE代码,只是没有记录下来,有两种写法

相关推荐

    Oracle行转列之pivot

    在Oracle数据库中,行转列(也称为数据透视)和列转行(unpivot)是SQL查询中用于数据转换的高级功能。...通过实际的使用示例和语法说明,本文旨在为读者提供一个全面的Oracle行转列之PIVOT功能的指南。

    oracle 行转列

    ### Oracle 行转列知识点详解 #### 一、Oracle 行转列概念及应用场景 在数据库操作中,经常需要对数据进行格式上的调整以便更好地分析或展示数据。其中,“行转列”是一种常见的数据处理方式,它指的是将原本存储...

    oracle行转列较精典的解决方案

    ### Oracle行转列的经典解决方案 在Oracle数据库管理与开发过程中,经常会遇到需要将数据表中的行数据转换为列数据的情况,这种操作被称为“行转列”或者“行列转换”。行列转换是数据分析、报表生成等场景中非常...

    Oracle行转列

    Oracle行转列 Oracle行转列是指在Oracle数据库中将行数据转换为列数据或将列数据转换为行数据的操作。这种操作在实际应用中非常有用,例如,在数据报表、数据分析和数据挖掘等领域都需要使用行转列操作。 1. 列...

    Oracle行转列(不定列)

    总的来说,Oracle数据库提供了`PIVOT`功能来实现行转列,对于确定的列数,`PIVOT`是高效且直接的解决方案。而在面对不定列时,动态SQL和自定义函数成为更合适的选择。在实际应用中,我们需要根据具体需求和数据特性...

    oracle行转列聚合函数WMSYS.WM_CONCAT

    ### Oracle行转列聚合函数WMSYS.WM_CONCAT详解 #### 一、概述 在进行数据处理时,经常会遇到需要将多行数据合并为单行的情况,这通常被称为“行转列”。Oracle数据库提供了多种方法来实现这一需求,其中`WMSYS.WM_...

    oracle动态行转列

    本文将深入探讨如何通过Oracle中的存储过程实现动态“行转列”,并结合给定文件的信息,详细解析其工作原理、优点及应用场景。 ### 核心知识点:Oracle动态行转列 #### 1. 存储过程与动态SQL 存储过程是预编译的...

    oracle行转列,列转行的例子

    oracle行转列,列转行的例子

    ORACLE行转列

    许多情况下,由于程序中需要将行转为列展示,如果使用ORACLE那么这个资源适合你。

    oracle实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf

    Oracle 实现行转列功能并使用逗号进行隔开拼接成为一条数据 Oracle 中实现行转列功能,并使用逗号进行隔开拼接,成为一条数据是指将多行数据合并成一行数据,并用逗号分隔每个字段的值。这种功能在实际应用中非常...

    Sql,oracle数据表行转列问题

    SQL行转列问题解决方案 SQL行转列问题是指将行记录转换为列记录的操作。本文将详细讲解SQL行转列问题的解决方案,并提供了一个具体的实例来帮助读者更好地理解该问题。 问题描述 假设我们有一个学生成绩表tb,...

    Oracle行转列题目:面试题目.sql

    面试题目.sql

    Oracle实现行转换成列的方法

    在Oracle数据库中,这种行转列的操作可以通过多种方法实现,包括使用`PIVOT`操作、`DECODE`函数以及自定义的聚合函数等。下面我们将详细讨论这些方法,并结合提供的实例进行解析。 首先,我们来看一个简单的例子,...

Global site tag (gtag.js) - Google Analytics