在 Oracle 中将行转换为列:利用 DECODE 和 PIVOT
问题:
转换一个表,其中的行表示与贷款编号关联的多种文档类型和 ID柱状格式。生成的表格应为每个贷款编号单独一行,并包含每种文档类型和相应 ID 的列。
示例:
输入表:
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID |
---|---|---|
992452533663 | Voters ID | XPD0355636 |
992452533663 | Pan card | CHXPS5522D |
992452533663 | Drivers licence | DL-0420110141769 |
期望输出:
LOAN NUMBER | VOTERS_ID | PAN_CARD | DRIVERS LICENCE |
---|---|---|---|
992452533663 | XPD0355636 | CHXPS5522D | DL-0420110141769 |
Oracle解决方案:
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 input_table GROUP BY loan_number ORDER BY loan_number;
PIVOT 子句(Oracle 11g):
SELECT * FROM input_table PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
这两种方法都可以有效地将行转变成列,从而达到预期的结果。浏览参考链接,了解有关 Oracle DECODE 和 PIVOT 的更多详细信息。
以上是如何在 Oracle 中使用 DECODE 和 PIVOT 将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!