Oracle 数据库的 PIVOT 函数可将行数据转换为列数据,语法为:PIVOT (agg_expr FOR col_name IN (value1, value2, ..., valueN) [PARTITION BY partition_col_name1, ..., partition_col_nameN])。示例使用场景是将多个行的 Sport 列转换为对应列,如 Basketball、Soccer、Baseball。

如何将 Oracle 数据转换成列
Oracle 数据库提供了一个名为 PIVOT 的函数,它可以将行数据转换为列数据。PIVOT 函数的语法如下:
<code>PIVOT (
agg_expr
FOR col_name
IN (value1, value2, ..., valueN)
[PARTITION BY partition_col_name1, ..., partition_col_nameN]
)</code>示例:
将以下表中的行数据转换为列数据:
| ID | Name | Sport |
|---|---|---|
| 1 | John | Basketball |
| 2 | Mary | Soccer |
| 3 | Bob | Basketball |
| 4 | Jane | Soccer |
| 5 | Tom | Baseball |
使用 PIVOT 函数将其转换为列数据:
<code class="sql">SELECT ID,
MAX(CASE WHEN Sport = 'Basketball' THEN Name END) AS Basketball,
MAX(CASE WHEN Sport = 'Soccer' THEN Name END) AS Soccer,
MAX(CASE WHEN Sport = 'Baseball' THEN Name END) AS Baseball
FROM (
SELECT ID, Name, Sport
FROM table_name
)
PIVOT (
Name
FOR Sport
IN ('Basketball', 'Soccer', 'Baseball')
)
GROUP BY ID;</code>输出:
| ID | Basketball | Soccer | Baseball |
|---|---|---|---|
| 1 | John | NULL | NULL |
| 2 | NULL | Mary | NULL |
| 3 | Bob | NULL | NULL |
| 4 | NULL | Jane | NULL |
| 5 | NULL | NULL | Tom |
以上就是oracle怎么转换为列的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号