首页 > 数据库 > mysql教程 > 如何使用 DECODE 或 PIVOT 在 Oracle 中高效地将行转换为列?

如何使用 DECODE 或 PIVOT 在 Oracle 中高效地将行转换为列?

Linda Hamilton
发布: 2025-01-01 10:02:12
原创
634 人浏览过

How to Efficiently Pivot Rows into Columns in Oracle Using DECODE or PIVOT?

在 Oracle 中将行转换为列

数据表通常包含分布在各个实体的多行中的信息。为了提高数据可读性和分析能力,将这些行转换为列可能会很有帮助。此问题演示了一个实际用例,即将包含单个贷款号码的文档信息的表转换为更用户友好的格式。

在 Oracle 中,可以使用 DECODE 函数或 PIVOT 有效地将行转换为列条款。让我们探讨如何使用这些方法来解决问题中提出的问题:

使用 DECODE 函数

SELECT
    loan_number,
    MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id,
    MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card,
    MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence
FROM
    doc_tab
GROUP BY loan_number
ORDER BY loan_number;
登录后复制

此查询使用 DECODE 函数来分配根据 document_type 将 document_id 值添加到适当的列。 MAX() 聚合函数用于检索每种文档类型的最新 document_id。

使用 PIVOT 子句(在 Oracle 11g 中可用)

SELECT *
FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);
登录后复制

PIVOT 子句提供了一种更简洁的方式将行转换为列。它需要指定聚合函数(在本例中为 MAX)和要旋转的列。

两种方法都可以有效地将行转换为列,从而为每个贷款编号的文档信息提供更直观、更有组织的视图。

以上是如何使用 DECODE 或 PIVOT 在 Oracle 中高效地将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板