Мне нужна помощь в Pivot в PL / SQL - PullRequest
0 голосов
/ 15 мая 2019

У меня есть таблица, которая выглядит так:

ELEMENTID   ELEMENTTYPE ELEMENTVALUE1   ELEMENTVALUE2
45271       ADD1        SUITE 400       SUITE40
45271       ADD2        169 LINCOLN 14  FURNACE
45271       CITY        SHARON          SHARON
45271       USCOUNTY    NORFOLK         NORFOLK
45271       STATE       MA              MA
45271       ZIP         2067            2067

В таблице много столбцов, таких как ELEMENTVALUE1, ELEMENTVALUE2...

Посредством хранимой процедуры на PL / SQL я хотел бы перенести все это так:

ELEMENTID   ADD1        ADD2        CITY    USCOUNTY STATE  ZIP
45271       SUITE 400   169 LINCOLN SHARON  NORFOLK  MA    2067
45271       SUITE 40    14 FURNACE  SHARON  NORFOLK  MA    2067

Я могу только получить:

ELEMENTID   ADD1        ADD2        CITY    USCOUNTY STATE  ZIP
45271       SUITE 400   169 LINCOLN SHARON  NORFOLK  MA     2067

1 Ответ

0 голосов
/ 16 мая 2019

Может быть, вам нужно что-то подобное, в этом примере вам понадобится много объединений, все зависит от вашего числа ELEMENTVALUES

SELECT
MIN (CASE elementtype  WHEN 'ZIP' THEN elementvalue1 END) ZIP,
MIN (CASE elementtype  WHEN 'ADD1' THEN elementvalue1 END) ADD1,
MIN (CASE elementtype  WHEN 'ADD2' THEN elementvalue1 END) ADD2,
MIN (CASE elementtype  WHEN 'CITY' THEN elementvalue1 END) CITY,
MIN (CASE elementtype  WHEN 'USCOUNTY' THEN elementvalue1 END) USCOUNTY,
MIN (CASE elementtype  WHEN 'STATE' THEN elementvalue1 END) STATE
FROM PIVOTED
GROUP BY elementid

UNION ALL

SELECT
MIN (CASE elementtype  WHEN 'ZIP' THEN elementvalue2 END) ZIP,
MIN (CASE elementtype  WHEN 'ADD1' THEN elementvalue2 END) ADD1,
MIN (CASE elementtype  WHEN 'ADD2' THEN elementvalue2 END) ADD2,
MIN (CASE elementtype  WHEN 'CITY' THEN elementvalue2 END) CITY,
MIN (CASE elementtype  WHEN 'USCOUNTY' THEN elementvalue2 END) USCOUNTY,
MIN (CASE elementtype  WHEN 'STATE' THEN elementvalue2 END) STATE
FROM PIVOTED
GROUP BY elementid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...