首页 > 解决方案 > 使用行中的列创建 Oracle 视图

问题描述

这是我的两张桌子:

表格1:

ID   |   Description
0    |   test
1    |   test1

表2:

ID   |   YEAR   | VALUE
0    |  2019    | 1000
0    |  2020    | 2000
1    |  2019    | 3000
1    |  2020    | 4000

我想要这个视图(2019 和 2020 可能是自定义行):

ID   | Description   | 2019   | 2020
0    | test          | 1000   | 2000
1    | test1         | 3000   | 4000

我知道如何连接这两个表,但不知道如何将 table2 中的值添加到该自定义列。谢谢

标签: oraclejoin

解决方案


使用结合聚合/透视的连接:

CREATE VIEW yourView AS
SELECT
    t1.ID,
    t1.Description,
    MAX(CASE WHEN t2.YEAR = 2019 THEN t2.VALUE END) AS "2019",
    MAX(CASE WHEN t2.YEAR = 2020 THEN t2.VALUE END) AS "2020"
FROM table1 t1
INNER JOIN table2 t2
    ON t1.ID = t2.ID
GROUP BY
    t1.ID,
    t1.Description
ORDER BY
    t1.ID;

演示查询的屏幕截图

演示


推荐阅读