在 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;
我有以下 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;