`
hongyangname
  • 浏览: 15303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 列转行 decode 函数的使用小结

阅读更多

最近项目的需求,需要将数据库中的列变为行,在网上查找了一下相关的资料,换成自己的理解,写在这里,方便以后查阅

 

如:decode(ex1,ex2,ex3,ex4); [这里的ex1 ,ex3代表的是列,ex2代表的是列的值,ex4代表的自定义值]

 

表示:将ex1列里的值ex2列的值进行比较,如果相同,则反回对应ex1某列的行的ex3列的值,不同则返回ex4 ,如果数据固定,ex4可以省略,if....exle语句 如果ex1的值=ex2则返回ex3,否则返回ex4

 

如:

 

select   t.row_num  ,  t.col_id  ,  t.Col_Value

                                                                     

from brpms.tb_rpt_data t                               

 

所查询的数据为

 

ROW_NUM         COL_ID        COL_VALUE    

4                           2                    刘家峡水电厂

4                           3                    刘家1         

4                           4                    刘家2         

5                           2                    刘家3         

5                           3                    刘家4         

5                           4                    刘家5         

 

 

 

期望的数据为根据COL_ID值相同分成N列如下所示:ABC代表234

 

ROW_NUM                  A                B                C            

      4                    刘家峡水电厂   刘家1           刘家2

      5                        刘家3           刘家4         刘家5

 

 

句为:

select                                                                 

     row_num,                                                      

     max(    decode(col_id,'2',col_value)    ) as a ,

     max(    decode(col_id,'3',col_value)    ) as b ,

     max(    decode(col_id,'4',col_value)    ) as c   
  from brpms.tb_rpt_data                                   

  group by row_num                                           

 

查询的结果同上

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ORACLE 列转行 DECODE函数用法

    下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql DECODE(column, value1, result1, value2, result2, ..., default_result) ``` 这里`column`是要检查的...

    oracle的列转行问题

    在 Oracle 中,通常使用 decode 或者 case 函数与聚合函数联合实现列转行功能。但是,这种方法存在一些缺陷,例如性能问题和数据重复访问问题。在本文中,我们将介绍一种新的解决方案,来解决 Oracle 列转行问题。 ...

    Oracle的列转行问题

    总结来说,Oracle中的列转行可以通过多种方法实现,包括传统的`DECODE`或`CASE`结合子查询,以及从11g版本开始提供的`PIVOT`功能。选择哪种方法取决于具体的需求和数据规模,以及对性能的考虑。在处理大数据量时,应...

    SQL中 decode()函数简介

    DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。 今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网...

    ORACLE 行列转换

    本文将详细介绍如何在Oracle中实现行转列(即行列转换的一种)以及列转行的操作,分别通过使用`decode`函数和`insert...select`语句来实现。 ### 一、使用`decode`函数进行“行转列” #### 1. **背景与需求** 在...

    Oracle行转列

    可以使用UNION ALL、MODEL和COLLECTION等方法来实现列转行。 使用UNION ALL方法,例如: ```sql SELECT id, 'c1' cn, c1 cv FROM t_col_row UNION ALL SELECT id, 'c2' cn, c2 cv FROM t_col_row UNION ALL SELECT ...

    Oracle的数据表中行转列与列转行的操作实例讲解

    总结来说,Oracle的行转列和列转行操作主要依赖于SQL的内置功能,如CASE语句、DECODE函数和UNION ALL,以及在动态SQL中的条件构建。理解并熟练运用这些技巧,可以帮助数据库管理员更好地处理和展示复杂的数据结构。

    Oracle 行列转换 总结

    Oracle 行列转换总结 Oracle 行列转换是指在 Oracle 数据库中将行与列之间进行转换的操作。这种转换有六种情况:列转行、行转列、多列转换成字符串、多行转换成字符串、字符串转换成多列、字符串转换成多行。 1. ...

    sql经典 oracle的查询结果的行列互换

    本文详细介绍了如何在 Oracle 数据库中实现数据的行列互换操作,分别使用了 `UNION`、`CASE` 以及 `DECODE` 函数等方法。每种方法都有其适用场景,具体选择哪种取决于实际需求和个人偏好。希望本文能够帮助你在实际...

    oracle数据行列转换

    1. 行转列:在Oracle 10g中,我们常用的是DECODE函数和CASE语句结合使用来实现简单的行转列。DECODE函数可以用来根据特定条件返回不同的值,而CASE语句则允许更复杂的逻辑判断。例如,我们可以为每个月的销售额创建...

    oracle学习参考

    - **行转列**:在Oracle中,传统的行转列方法是使用`DECODE`函数配合`GROUP BY`。例如,统计各部门的总工资,可以通过多列`SUM`实现。而在Oracle 11g及更高版本,引入了`PIVOT`功能,使得行转列更加直观。`PIVOT`...

    Oracle 行列转换总结

    - 使用`MAX`函数结合`DECODE`函数来实现行转列。 ```sql SELECT id, MAX(DECODE(cn, 'c1', cv, NULL)) AS c1, MAX(DECODE(cn, 'c2', cv, NULL)) AS c2, MAX(DECODE(cn, 'c3', cv, NULL)) AS c3 FROM t_row_...

    Oracle行列转换_总结

    - **操作原理**: 使用 `MAX` 函数(或其他聚合函数)结合 `DECODE` 函数来选择特定的行数据。 - **示例**: ```sql SELECT id, MAX(DECODE(cn, 'c1', cv, NULL)) AS c1, MAX(DECODE(cn, 'c2', cv, NULL)) AS c2...

    Oracle单条SQL语句可以做什么.pdf

    -- 使用DECODE函数实现行转列 SELECT DECODE(rn, 1, t1, 2, t2, 3, t3, 4, t4, 5, t5) AS val FROM t CROSS JOIN (SELECT ROWNUM AS rn FROM dual CONNECT BY ROWNUM ); ``` 在这个例子中,通过使用`DECODE`函数配合...

    行列转换总结.pdf

    ##### 2.1 使用 UNION ALL 进行列转行 适用于 Oracle 数据库 8i 及以上版本。这种方法的基本思路是将每列作为独立的查询结果,然后使用 `UNION ALL` 将这些结果合并起来。 **示例 SQL**: ```sql SELECT id, 'c1' ...

    数据库行列转换算法

    Oracle数据库提供了多种方法来实现这种转换,本篇将详细介绍如何在Oracle中进行行列转换,包括列转行、行转列以及各种复杂场景下的转换。 1. 列转行 列转行主要是将数据库表中的多列数据转换为多行数据。在Oracle...

    sql行列转换[借鉴].pdf

    2. **DECODE函数**:`DECODE`函数在某些数据库系统(如Oracle)中使用,功能类似于`CASE`语句,根据第一个参数是否等于给定的值返回第二个或第三个参数。在这里,它用于对不同血液制品的量进行求和。 3. **GROUP BY...

    Oracle实现行列转换的方法分析

    总结来说,Oracle提供了多种方式来实现行列转换,包括使用`DECODE`、`SUM`、PL/SQL函数、分析函数等。选择哪种方法取决于具体的数据结构和需求。在实际应用中,需要灵活运用这些技术,以满足复杂的数据分析和报表...

Global site tag (gtag.js) - Google Analytics