面临将多行多列的表数据转换为更具可读性的列式结构的挑战? 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 子句。
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。
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
PIVOT 子句将文档类型作为列对齐,并将相应的文档 ID 放入适当的单元格。
通过利用这些技术,您可以有效地将数据重塑为更加以列为中心的布局,从而更容易了解并进一步分析。
以上是Oracle中如何高效地将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!