Получить результаты SQL-запроса в одной строке из нескольких столбцов - PullRequest
0 голосов
/ 28 июня 2019

У меня есть таблица UPC с записями ниже

SKU         ATTR_NAME       ATTR_VALUE
---------   ---------       ----------
38890630    COLOR           Black
38890630    DISC            Y
38890630    SIZE            8

И я хочу вывод, как показано ниже

SKU         COLOR     SIZE
---------   ------    ----
38890630    Black      8

Я пробовал несколькими способами, но не смог получить желаемыйвыход.Может ли кто-нибудь помочь в этом?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Вы можете использовать условное агрегирование:

select sku,
       max(case when attr_name = 'COLOR' then attr_value end) as color,
       max(case when attr_name = 'DISC' then attr_value end) as disc,
       max(case when attr_name = 'SIZE' then attr_value end) as size
from t
group by sku;
0 голосов
/ 28 июня 2019

Вы можете использовать запрос PIVOT:

WITH UPC_TABLE AS (
    SELECT 38890630 AS SKU, 'COLOR' AS ATTR_NAME, 'BLACK' AS ATTR_VALUE FROM DUAL
    UNION ALL SELECT 38890630 AS SKU, 'DISC' AS ATTR_NAME, 'Y' AS ATTR_VALUE FROM DUAL
    UNION ALL SELECT 38890630 AS SKU, 'SIZE' AS ATTR_NAME, '8' AS ATTR_VALUE FROM DUAL
)
SELECT * FROM 
     UPC_TABLE PIVOT (MAX(ATTR_VALUE) AS ATTR_VALUE FOR (ATTR_NAME) IN (
          'COLOR' AS COLOR
      ,   'DISC' AS DISC
      ,   'SIZE' AS SIZE_FIELD
     )

);

...