今天群里市讨论一个列转行的问题,开始没有一点头绪的,后来有位大哥说到是列转行的问题,好像以前看到过就没没有仔细去看,又查了下je里面的贴子,找到了解决的办法如下:
现有两张表,分别为 A_table,B_table
分别存储数据如下:
A_table
id name
1 zhang
2 li
3 wang
B_table
id type value
1 a 1
1 b 2
2 c 2
3 b 1
3 d 3
现在问题是 如何能实现如下显示
id name a b c d
1 zhang 1 2
2 li 2
3 wang 1 3
如:decode(ex1,ex2,ex3,ex4); [这里的ex1 ,ex3代表的是列,ex2代表的是列的值,ex4代表的自定义值]
表示:将ex1列里的值和ex2列的值进行比较,如果相同,则反回对应ex1某列的行的ex3列的值,不同则返回ex4 ,如果数据固定,ex4可以省略,if....exle语句 如果ex1的值=ex2则返回ex3,否则返回ex4
select id ,name,max(decode(B_table.type,'a',B_table.value)) as a,
max(decode(B_table.type,'b',B_table.value)) as b,
max(decode(B_table.type,'c',B_table.value)) as c,
max(decode(B_table.type,'d',B_table.value)) as d
from A_table,B_table
where A_table.id = B_table.id
group by A_table.id,A_table.name;
没有测试,应该不会错。
参考引用的博客:http://hongyangname.iteye.com/blog/674609 谢谢!
分享到:
相关推荐
Oracle 列转行问题解决方案 Oracle 数据库中,列转行问题是一个非常传统的话题。在这个问题中,我们需要将行数据转换成不同的列表示,或者将不同的列数据写到同一列的不同行上。这种问题在实际应用中非常常见,如将...
总结来说,Oracle中的列转行可以通过多种方法实现,包括传统的`DECODE`或`CASE`结合子查询,以及从11g版本开始提供的`PIVOT`功能。选择哪种方法取决于具体的需求和数据规模,以及对性能的考虑。在处理大数据量时,应...
DECODE函数在处理列转行的问题时,尤其适用于将多列数据合并到一行中,使得数据展示更加简洁明了。下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql ...
oracle行转列,列转行的例子
SELECT TRIM(',' FROM SYS.STRAGG(A_NAME||NVL2(A_NAME,',','')))as nams FROM A_TEMP
oracle中实现列转行实例,有表的创建,数据的插入,查询的sql
在Oracle Developer中,"列转行小工具"是一种实用功能,它主要用于处理数据库表中的数据,将多列数据转换为单列数据,通常涉及到的是数据的行列转换操作。这种操作在处理复杂的数据分析、报表生成或者接口对接时非常...
sql 行转列 与列转行,oracle ,msssql等,详细数据库操作方法,各种例子,欢迎大家学习。、~
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
因此用到了逗号分隔列转行的方法。目前该方法只适合在oracle数据库中使用。该方法只需要sql语句就可以实现列转行。 下面给出该方法的示例: select a,b,c from(with test as (select ‘aaa’ a,’bbb’ b,’1,2,3...
Oracle中的WM_CONCAT函数是一个非标准的聚合函数,主要用于将多行数据合并成单行,以逗号分隔的形式返回。这个函数在处理特定的数据汇总和报告需求时非常有用,尤其是在你需要将某个列的多个值合并成一个字符串时。...
理解日常工作中常用到的多列分组, 如【统计不同部门、 不同职位的平均工资】和 行转列 包含例子 和 个人理解分析
在Oracle数据库中,行转列(也称为数据透视)和列转行(unpivot)是SQL查询中用于数据转换的高级功能。从Oracle 11g版本开始,引入了PIVOT和UNPIVOT关键字,以支持显式的查询转换,即从行数据转换为列数据,或从列...
本文将详细介绍如何在Oracle中实现行转列(即行列转换的一种)以及列转行的操作,分别通过使用`decode`函数和`insert...select`语句来实现。 ### 一、使用`decode`函数进行“行转列” #### 1. **背景与需求** 在...
- T-SQL_经典行专列、列转行,分页及存储过程.doc:T-SQL是SQL Server的扩展,但其中的行转列和分页概念与Oracle相似。在Oracle中,可以使用ROW_NUMBER()函数配合PARTITION BY和ORDER BY来实现分页查询。 - oracle_...
在Oracle数据库管理中,数据处理有时需要将行数据转换为列数据,或者将列数据转换为行数据,这种操作被称为行列转换。Oracle 10g 提供了多种方法来实现这种转换,包括使用PIVOT和UNPIVOT操作,以及自定义SQL查询等。...