Oracle 10g 中的 PIVOT 函数

PIVOT function in Oracle 10g

我有一个 table 包含以下数据

SKU     Site  Code    Value
0890    50    BRAND   OMH
0890    50    CSBC    0763440890
0890    50    DWPS    0763440890
0890    50    DWS     0763440890
0890    50    DWSG    *
0890    50    EA      1

我希望将其转换成如下所示的 table

SKU     BRAND   CSBC        DWPS        DWS         DWSG    EA
0890    OMH     0763440890  0763440890  0763440890  *       1

我们的Oracle数据库版本是10G,所以PIVOT还没有用。

请帮忙。

Oracle 10 没有数据透视表,因此您可以使用条件聚合:

select sku,
       max(case when code = 'BRAND' then value end) as brand,
       max(case when code = 'CSBC' then value end) as CSBC,
       max(case when code = 'DWPS' then value end) as DWPS,
       max(case when code = 'DWS' then value end) as DWS,
       max(case when code = 'DWSG' then value end) as DWSG,
       max(case when code = 'EA' then value end) as ea
from t
group by sku;