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

如何在 Oracle 中使用 DECODE 和 PIVOT 将行转换为列?

Susan Sarandon
发布: 2024-12-31 15:54:21
原创
614 人浏览过

How to Transform Rows into Columns in Oracle Using DECODE and PIVOT?

如何在 Oracle 中将行转换为列

在 Oracle 中,您可能会遇到数据按行排列但需要按行排列的情况以柱状方式显示。本文深入探讨使用 DECODE 函数或 PIVOT 子句将行转换为列的方法。

考虑下表包含贷款详细信息:

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

要将行转换为列,您可以使用 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 license', document_id)) AS drivers_licence
  FROM
    doc_tab
GROUP BY loan_number
ORDER BY loan_number;
登录后复制

此查询将产生以下结果输出:

LOAN_NUMBER   VOTERS_ID            PAN_CARD             DRIVERS_LICENCE    
------------- -------------------- -------------------- --------------------
992452533663  XPD0355636           CHXPS5522D           DL-0420110141769     
登录后复制

在 Oracle 11g 及更高版本中,PIVOT 子句提供了一种更简单的方法来实现相同的结果:

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

两种方法都可以有效地将行转换为列,从而允许您可以以首选格式操作和显示数据。

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

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