Oracle横表怎么转纵表?

在Oracle数据库中,将横表转换为纵表的方法主要有两种:

  1. 使用UNPIVOT操作:UNPIVOT是PIVOT操作的逆操作,可以将横表中的列转换为行。通过UNPIVOT操作,可以将横表中的数据转换为纵表的形式。以下是使用UNPIVOT操作进行转换的示例:
SELECT * FROM (
  SELECT account_id, account_name, account_value FROM account
) UNPIVOT (
  account_value FOR account_type IN (1 AS 'Checking', 2 AS 'Saving')
);

在上述示例中,account是一个横表,包含account_id、account_name和account_value三个字段。通过UNPIVOT操作,将account_value列转换为行,并使用account_type作为标识符。这样可以将横表中的数据转换为纵表的形式。

  1. 使用CASE语句:另一种将横表转换为纵表的方法是使用CASE语句。通过CASE语句,可以根据指定的条件对数据进行分组,并将每个分组的结果作为列输出。以下是使用CASE语句进行转换的示例:
SELECT ID,
  MAX(CASE WHEN DATE = '2021-01-01' THEN VALUE ELSE NULL END) AS DATE_20210101,
  MAX(CASE WHEN DATE = '2021-02-01' THEN VALUE ELSE NULL END) AS DATE_20210201,
  MAX(CASE WHEN DATE = '2021-03-01' THEN VALUE ELSE NULL END) AS DATE_20210301
FROM account;

在上述示例中,使用CASE语句根据DATE字段的值对数据进行分组,并将每个分组的结果作为列输出。这样可以将横表中的数据转换为纵表的形式。

根据具体的数据库结构和需求,可以选择适合的方法来进行横表到纵表的转换。

发表评论

后才能评论