简体   繁体   English

从多列的一行中获取SQL查询结果

[英]Get SQL query results in a single row from multiple columns

I have a UPC table with below records 我有一个带有以下记录的UPC表

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

And I want the output as below 我想要的输出如下

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

I tried with multiple ways but couldn't able to get the desired output. 我尝试了多种方法,但无法获得所需的输出。 Can some one help on this? 有人可以帮忙吗?

You can use conditional aggregation: 您可以使用条件聚合:

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;

You can use PIVOT query : 您可以使用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
     )

); );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM