如何在 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中文网其他相关文章!