【问题标题】:Create Oracle View with columns from row使用行中的列创建 Oracle 视图
【发布时间】:2019-11-11 21:30:27
【问题描述】:

这是我的两张桌子:

表 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 中的值添加到该自定义列。谢谢

【问题讨论】:

  • 您可以在Oracle中使用pivot或MAX函数将行转换为列

标签: oracle join


【解决方案1】:

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

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;

Demo

【讨论】:

  • 在 FROM 子句中应该是 table1 t1
【解决方案2】:

View下方使用:

Create View View_name 
as 
SELECT
    tbl1.ID,
    tbl1.Description,
    MAX(CASE WHEN tbl2.YEAR = 2019 THEN tbl2.VALUE END) AS "2019",
    MAX(CASE WHEN tbl2.YEAR = 2020 THEN tbl2.VALUE END) AS "2020"
FROM table1 tbl1
INNER JOIN table2 tbl2
    ON tbl1.ID = tbl2.ID
GROUP BY
    tbl1.ID,
    tbl1.Description;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2014-04-25
    相关资源
    最近更新 更多