在 Oracle 中将行转换为列
数据表通常包含分布在各个实体的多行中的信息。为了提高数据可读性和分析能力,将这些行转换为列可能会很有帮助。此问题演示了一个实际用例,即将包含单个贷款号码的文档信息的表转换为更用户友好的格式。
在 Oracle 中,可以使用 DECODE 函数或 PIVOT 有效地将行转换为列条款。让我们探讨如何使用这些方法来解决问题中提出的问题:
使用 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 doc_tab GROUP BY loan_number ORDER BY loan_number;
此查询使用 DECODE 函数来分配根据 document_type 将 document_id 值添加到适当的列。 MAX() 聚合函数用于检索每种文档类型的最新 document_id。
使用 PIVOT 子句(在 Oracle 11g 中可用)
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
PIVOT 子句提供了一种更简洁的方式将行转换为列。它需要指定聚合函数(在本例中为 MAX)和要旋转的列。
两种方法都可以有效地将行转换为列,从而为每个贷款编号的文档信息提供更直观、更有组织的视图。
以上是如何使用 DECODE 或 PIVOT 在 Oracle 中高效地将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!