Oracle11g提供了新的行列转换操作:PIVOT(行转列)和UNPIVOT列转行。老版本使用decode来进行转换,本文使用UNPIVOT的功能进行展示。 详细资料请看: http://www.oracle.com/technetwork/cn/articles/11g-pivot-101924-zhs.html
现有表src_table如下:
product_Id(产品ID)product_color(颜色)porduct_type(型号)is_intelligent(是否智能)
1111 red t1 是
1112 blue t2 否
1113 green t3 是
目标表dest_table如下:
product_Idparam_name(参数名称)param_value(参数值)
1111 product_color red
1112 product_color blue
1113 product_color green
1111 product_typet 1
1112 product_typet 2
1113 product_typet 3
1111 is_intelligent 是
1112 is_intelligent 否
1113 is_intelligent 是
通过UNPIVOT实现如下:
SELECT *
FROM src_table
UNPIVOT (param_value FOR param_name IN (product_color AS 'product_color', product_type AS 'product_type', is_intelligent AS 'is_intelligent');