oracle unpivot函数用法
Oracle 中的unpivot 函数可以将列旋转为行,将多个列变成一列。以下是一个例子来解释Oracle unpivot 函数的用法:
假设我们有一个包含每年不同城市销售额的数据表 "sales",其中每列表示城市和年份,每行表示总销售额。我们希望将此表旋转为“城市”、“年份”和“销售额”三个列的表格。
原始表格数据如下:
+--------------+------+------+------+
| Sales Amount | 2018 | 2019 | 2020 |
oracle trunc函数的使用方法+--------------+------+------+------+
| New York    | 1000 | 1200 | 1500 |
| London      | 800  | 1100 | 1300 |
| Shanghai    | 700  | 900  | 1200 |
+--------------+------+------+------+
我们可以使用 Oracle UNPIVOT 函数来实现这个目标。下面是代码示例:
SELECT city, year, sale_amount
FROM sales
UNPIVOT(
sale_amount FOR year IN (2018, 2019, 2020)
) unpiv;
结果如下:
+---------+------+--------------+
|  City  | Year | Sale_Amount  |
+---------+------+--------------+
| New York | 2018 |        1000 |
| London  | 2018 |          800 |
| Shanghai| 2018 |          700 |
| New York | 2019 |        1200 |
| London  | 2019 |        1100 |
| Shanghai| 2019 |          900 |
| New York | 2020 |        1500 |
| London  | 2020 |        1300 |
| Shanghai| 2020 |        1200 |
+---------+------+--------------+
在这个例子中,我们使用了 UNPIVOT 函数将每个年份的销售额旋转为行,并且为它们指定了别名"sale
_amount",然后将旋转后的表与原始表进行连接。通过这个操作,我们可以得到一个包含城市、年份和销售额三个列的表格。
需要注意的是,UNPIVOT函数的用法需要在数据中存在多个列且这些列存储的数据类型必须相同。同时,UNPIVOT 函数支持使用 WHERE 子句对旋转前的表进行筛选。
下面是一个在 UNPIVOT 函数中使用 WHERE 子句的例子:
结果如下:
在这个例子中,我们使用了 WHERE 子句来仅选择城市为“New York”和年份为 2019 的行。
总之,Oracle UNPIVOT
函数可以将列旋转为行,非常适用于需要将多个列合并为一个列的情况。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。