Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle10g中的PIVOT函数_Sql_Oracle_Oracle10g - Fatal编程技术网

Sql oracle10g中的PIVOT函数

Sql oracle10g中的PIVOT函数,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我有一个包含以下数据的表 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 我希望将其转换为如下所示的表 SKU BRAND CSBC

我有一个包含以下数据的表

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
我希望将其转换为如下所示的表

SKU     BRAND   CSBC        DWPS        DWS         DWSG    EA
0890    OMH     0763440890  0763440890  0763440890  *       1
我们拥有的Oracle db版本是10G,因此PIVOT还没有用处


请提供帮助。

Oracle 10没有pivot,因此您可以使用条件聚合:

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;

是否预先知道整套可能的代码标识符?如果不是,您将需要动态SQL(即使使用
pivot
操作符,即使在Oracle 12.2当前版本中也是如此)。嘿,我已经两年没有得到这个答案了,它确实帮了我很大的忙。谢谢