pivot / unpivot statement

时间:2017-12-12 12:46:07

标签: sql oracle11g pivot

嗨,有这样的表

NR PROJECT  RESULT
1  name1    234
1  name2    937
2  name1    3
2  name2    6

我试图以这种方式呈现结果:

NR NAME1 NAME2
1  234   937
2  3     6

因此PROJECT列的VALUES成为表示各自RES值的标题,而相同的NR值合并为一行

帮助:)

1 个答案:

答案 0 :(得分:1)

如果您正在使用固定的项目列表,则可以使用(正如您在问题标题中提到的)pivot

http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html

SELECT
    *
FROM
    yourTable
PIVOT
(
    SUM(result)
    FOR project IN ('name1' AS NAME1, 'name2' AS NAME2)
)

这将产生与“条件聚合”相同的结果。

SELECT
    NR,
    SUM(CASE WHEN PROJECT = 'name1' THEN result END)   AS NAME1,
    SUM(CASE WHEN PROJECT = 'name2' THEN result END)   AS NAME2
FROM
    yourTable
GROUP BY
    NR

示例:http://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=19f31ce152f4f88c3d74e867016765d7