首页 > 数据库 > mysql教程 > Oracle中如何高效地将行转换为列?

Oracle中如何高效地将行转换为列?

DDD
发布: 2025-01-04 21:27:40
原创
426 人浏览过

How to Efficiently Transform Rows into Columns in Oracle?

如何在 Oracle 中将行转换为列

面临将多行多列的表数据转换为更具可读性的列式结构的挑战? Oracle 数据库提供了强大的技术来简化此任务。

假设您有一个包含贷款信息和文档的表,例如:

LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID
------------------------------------------
992452533663 | Voters ID | XPD0355636
992452533663 | Pan card | CHXPS5522D
992452533663 | Drivers licence | DL-0420110141769
登录后复制

要将这些行转换为结构化列,您可以利用 Oracle 10g 中的 DECODE 函数或 Oracle 11g 中引入的 PIVOT 子句。

DECODE 函数 (Oracle 10g)

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 函数根据特定文档类型将值分配给所需的列。然后,MAX 函数返回每列的匹配文档 ID。

PIVOT 子句 (Oracle 11g)

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

PIVOT 子句将文档类型作为列对齐,并将相应的文档 ID 放入适当的单元格。

通过利用这些技术,您可以有效地将数据重塑为更加以列为中心的布局,从而更容易了解并进一步分析。

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

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