在 oracle 中将垂直 table 转换为水平

Convert vertical table to horizontal in oracle

我有以下 table 格式。

POLNO NAME PRM
12100 PRMA 161410
12100 PRMB 0
12100 PRMC 0
12100 PRMD 80

我需要转换这个 table 才能跟进。

POLNO PRMA PRMB PRMC PRMD
12100 161410 0 0 80

有人知道怎么做吗?

您可以使用旋转逻辑:

SELECT
    POLNO,
    MAX(CASE WHEN NAME = 'PRMA' THEN PRM END) AS PRMA,
    MAX(CASE WHEN NAME = 'PRMB' THEN PRM END) AS PRMB,
    MAX(CASE WHEN NAME = 'PRMC' THEN PRM END) AS PRMC,
    MAX(CASE WHEN NAME = 'PRMD' THEN PRM END) AS PRMD
FROM yourTable
GROUP BY POLNO;